我在解析一些返回的JSON时遇到了一些麻烦。我很擅长使用JSON。我正试图从第一个JSON数组元素中获取公司名称。我有一种感觉,我很困惑使用NSMutabeArray和NSMutableDictionary。我得到的是null。知道我做错了吗?
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);
答案 0 :(得分:3)
在浏览器中加载该网址。看起来谷歌正在为JSON添加前缀//。我认为NSJSONSerialization正在绊倒它。试试这个
NSRange range = NSMakeRange(2, [data length] - 3);
NSData *noPrefix = [data subdataWithRange:range];
然后将其发送给解析器。
答案 1 :(得分: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];