JSON返回null

时间:2012-07-24 04:44:13

标签: iphone objective-c arrays json ipad

我在解析一些返回的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);

2 个答案:

答案 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];