2016-04-29 45 views
3

我是新来开发和stackoverflow请帮助我。我正试图做一个简单的应用程序,其中YQL链接用于获取本地数据并以表格格式显示。为此,我将数据转换为字典,稍后我想将它发送到表中。但是,当我试图将数据转换为字典它说空。请帮帮我。检查下面的屏幕截图。提前致谢。使用NSJSONSerialization时从NSDictionary获得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); 

} 

enter image description here

+0

使用'error'参数。这是有原因的。 – rmaddy

回答

7

默认情况下,从Yahoo API返回的响应为XML。你应该追加format=json的查询字符串,以获得JSON格式的响应,因此您可以使用NSJSONSerialization类解析它:所以你需要做的XML解析

NSJSONSerialization是

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

它的工作非常感谢:) –

1

你的API返回的XML数据用于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数据。

申报在.m文件.h文件中

@property (nonatomic, strong) NSXMLParser *xmlParser; 

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的解析它,然后将其委托执行相关方法...祝你好运..