2016-04-29 2 views
3

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

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 запрос в строку (* ул)

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); 

} 

enter image description here

+0

Используйте параметр 'error'. Это по какой-то причине. – rmaddy

ответ

7

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

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

Он работает Спасибо большое :) –

1

Данные XML API Возратиться так что вам нужно сделать 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 не JSon

использование NSXMLParser для анализа данных xml

1

Пожалуйста, используйте 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]; 
0

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

Смежные вопросы