Получение null из NSDictionary при использовании NSJSONSerialization

Я новичок в разработке и stackoverflow, пожалуйста, помогите мне. Я пытаюсь сделать простое приложение, где ссылка YQL используется для получения локальных данных и отображения их в формате таблицы. Для этого я преобразовываю данные в словарь, позже я хочу отправить его в таблицу. Но когда я попытался преобразовать данные в словарь, он говорит null. Пожалуйста, помогите мне. Проверьте снимок экрана ниже. Заранее спасибо.

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 

Здесь я взял запрос json в строку (* str)

 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; // NSString *stringFromData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // NSLog(@"%@", stringFromData); 

Когда я попытался реализовать этот прокомментированный код, получая результат, как ожидалось, но я хочу поместить все данные в словарь и отобразить его, поэтому я попытался преобразовать данные в словарь

 NSDictionary *dataFromWeb = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSDictionary *queryDict = [dataFromWeb objectForKey:@"query"]; NSDictionary *results = [dataFromWeb objectForKey:@"results"]; NSString *allResults = [queryDict objectForKey:@"Results"]; NSLog(@"%@", dataFromWeb); } 

введите описание изображения здесь

Ответ, возвращающийся из API Yahoo, по умолчанию является XML . Вы должны добавить format=json к querystring, чтобы получить ответ в формате JSON , чтобы вы могли его NSJSONSerialization с NSJSONSerialization класса NSJSONSerialization :

 https://query.yahooapis.com/v1/public/yql?format=json&q=select... 

Ваши данные Api Return xml, поэтому вам нужно выполнить синтаксический анализ xml

NSJSONSerialization используется для разбора json

 NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; NSURL *UrlFromStr = [NSURL URLWithString:str]; 

удалите этот UrlFromStr в своем браузере, вы видите, что он возвращает данные xml not json

использовать NSXMLParser для анализа данных XML

Используйте NSXMLParser для анализа XML-данных вместо NSJSONSerialization. NSJSONSerialization используется для анализа данных JSON.

Объявление в .h файле

 @property (nonatomic, strong) NSXMLParser *xmlParser; 

в .m файле.

 NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; self.xmlParser = [[NSXMLParser alloc] initWithData:data]; self.xmlParser.delegate = self; // Initialize the mutable string that we'll use during parsing. self.foundValue = [[NSMutableString alloc] init]; // Start parsing. [self.xmlParser parse]; 

Формат объектов, которые вы хотите проанализировать, – это XML, но вы используете класс ParseJSON для его анализа, поэтому он возвращает NULL. Вы можете использовать класс NSXML для его анализа, а затем установить его делегат для выполнения связанных методов … Хорошо удачи вам ..

ваш Api не является json, его формат XML использует XML Parser, см. ниже ссылку,

http://www.theappguruz.com/blog/xmlparsing-with-nsxmlparser-tutorial

надеюсь, что это будет полезно.

Interesting Posts
Давайте будем гением компьютера.