0

我在解析一些返回的 JSON 时遇到了一些麻烦。我对使用 JSON 很陌生。我正在尝试从第一个 JSON 数组元素中获取公司名称。我有一种感觉,我混淆了 NSMutabeArray 和 NSMutableDictionary 的使用。我得到的是空的。知道我做错了什么吗?

NSString *url = @"http://www.google.com/finance/info?infotype=infoquoteall&q=C,JPM,AIG,AAPL";

NSData* data = [NSData dataWithContentsOfURL: 
                [NSURL URLWithString: url]];

//parse out the json data
NSError* error;
NSMutableArray* json = [NSJSONSerialization 
                      JSONObjectWithData:data //1

                      options:kNilOptions 
                      error:&error];

NSString* companyName = [[json objectAtIndex:0] objectForKey:@"name"] ; //Where I need some help

NSLog(@"we got %@", companyName);
4

2 回答 2

3

在浏览器中加载该网址。看起来谷歌在 JSON 前面加上 //。我认为 NSJSONSerialization 是绊脚石。尝试这个

NSRange range = NSMakeRange(2, [data length] - 3);
NSData *noPrefix = [data subdataWithRange:range];

然后将其发送到解析器。

于 2012-07-24T06:02:53.537 回答
2

你放入了一个错误对象,但你从未看过它。如果有,您会看到数据已损坏:

Error Domain = NSCocoaErrorDomain Code = 3840 "The data couldn’t be read because it has been corrupted." (Invalid value around character 1.) UserInfo = 0x10030a8f0 { NSDebugDescription = Invalid value around character 1. }

我更改了 options 参数的值以查看此错误。我有

NSMutableArray* json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers |NSJSONReadingAllowFragments error:&error];
于 2012-07-24T05:28:47.203 回答