我正在尝试解析此网址上的JSON文件:http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.quotes%20其中%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22% 2C%22GOOG%22%2C%22MSFT%22)%0A%09%09&安培;格式= JSON&安培;诊断=真安培; ENV = HTTP%3A%2F%2Fdatatables.org%2Falltables.env&安培;回调=结果
到目前为止我的代码如下:
NSData *data=[NSData dataWithContentsOfURL:[[NSURL alloc] initWithString:url]];
NSError *error = nil;
id myJSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
NSLog(@"%@", error);
NSArray *jsonArray = (NSArray *)myJSON;
for (id element in jsonArray) {
NSLog(@"Element: %@", [element description]);
}
此代码似乎每次都会出现错误(ERROR 3840“操作无法完成。(Cocoa error 3840。)”(JSON文本没有以数组或对象开头,并且选项允许未设置片段。)“)。
我想知道这是否是我下载/解析数据的方式有问题,或者如果它是实际JSON中的一个问题,我必须在另一个问题上处理它。
答案 0 :(得分:1)
删除网址末尾的&callback=results
。这会导致JSON不以数组或字典开头。请注意,如果您在JSON代码中引用“结果”,则需要删除/更改它。如果您对两个JSON文本进行区分,那么您将看到差异(查看开头)。
答案 1 :(得分:0)
在网络浏览器中打开您发布的网址的结果复制内容然后转到jsonlint.com并粘贴内容然后单击验证。它向您显示输入无效json,因此您可能需要进行一些额外的解析。