【问题标题】:JSON returning nullJSON 返回空值
【发布时间】:2023-03-07 12:28:01
【问题描述】:

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

【问题讨论】:

  • 通过记录以下值帮助我们找出问题所在:JSON 字符串本身、json[json objectAtIndex:0]

标签: iphone objective-c arrays json ipad


【解决方案1】:

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

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

然后将其发送到解析器。

【讨论】:

    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多