#ios #json
#iOS #json
Вопрос:
Проблема, с которой я сталкиваюсь, заключается в том, что когда я извлекаю данные JSON с сервера, вместе с ними появляется строка заголовка XML. Я пробовал некоторые изменения в коде, но тщетно. Данные ответа идеальны, но проблема заключается в заголовке XML. Итак, на данный момент я попробовал substring
строку ответа и сумел извлечь правильные данные JSON. Но то, что я хочу знать, является причиной этой проблемы и что я здесь делаю не так.
Это мой код извлечения JSON.
NSURL *url=[NSURL URLWithString:@"myServiceURL"];
NSData *response = [NSData dataWithContentsOfURL:url];
NSString *badStr = [NSString stringWithUTF8String:[response bytes]];
NSString *goodStr = [badStr substringFromIndex:76];
NSString *finalStr = [goodStr substringToIndex:[goodStr length]-9];
NSData *goodData = [finalStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:goodData options: NSJSONReadingMutableContainers error: amp;error];
Это включает в себя код для выполнения подстроки в полученном ответе JSON.
И вот пример ответа JSON, который я получаю.
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
[{"Title":"DemoTitle","CreationDate":"06/06/2014","Description":"DemoDescription"}]
</string>
Требуется руководство. Спасибо.
Комментарии:
1. Это не JSON, это XML со встроенным JSON в виде строки. Вам нужно заставить сервер просто отправить вам JSON, или вам нужно обработать XML как XML, получить строку, а затем обработать ее как JSON.
2. Спасибо за быстрый ответ. Я посмотрю на это. И можете ли вы сказать, почему он появляется в такой форме? то есть XML со встроенным JSON.
3. Извините, я понятия не имею. Вам следует спросить людей, которые предоставляют услугу 🙂 Скорее всего, услуга предоставляется через какой-то устаревший XML или SOAP или что-то в этом роде, и люди внедрили туда JSON по другим причинам. Определенно, не пытайтесь просто получить подстроку JSON, хотя это может вас укусить в будущем, даже если сейчас кажется, что это работает.
4. Конечно. Обязательно изучите это. Спасибо за разъяснение!
Ответ №1:
Если по какой-либо причине вы не можете заставить сервер прекратить отправку данных в формате xml со встроенным json, вы можете сначала проанализировать XML с помощью NSXMLParser, а затем проанализировать JSON из этого.
Комментарии:
1. Вероятно, единственный способ сделать это. Спасибо.