我是开发和stackoverflow的新手,请帮助我。我正在尝试做一个简单的应用程序,其中YQL链接用于获取本地数据并以表格格式显示它。为此我将数据转换为字典,稍后我想将其发送到表中。但是当我试图将数据转换为Dictionary时,它表示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);
}
答案 0 :(得分:7)
默认情况下,Yahoo API返回的响应为XML
。您应该将format=json
附加到查询字符串,以便以JSON
格式获取响应,以便您可以使用NSJSONSerialization
类对其进行解析:
https://query.yahooapis.com/v1/public/yql?format=json&q=select...
答案 1 :(得分:1)
您的Api返回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数据不是json
使用NSXMLParser解析xml数据
答案 2 :(得分: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];
答案 3 :(得分:0)
您要解析的对象的格式是XML,但是您使用ParseJSON类来解析它,因此它返回NULL。您可以使用NSXML类来解析它,然后设置其委托来执行相关的方法。祝你好运..
答案 4 :(得分:0)
你的Api不是json,它的XML格式使用XML Parser,请访问下面的链接,
http://www.theappguruz.com/blog/xmlparsing-with-nsxmlparser-tutorial
希望它有所帮助。