获取NSArray但期望从JSON获得NSDictionary

时间:2014-10-21 14:27:41

标签: ios json

我的JSON在下面,我正在解析它:

NSDictionary *jsonDict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

当我[jsonDict objectForKey:@"contactPoints"]时,我收回NSArray的NSDictionary对象(每个联系人一个具有单个键/值对)而不是单个字典对象,其中包含3个键,如&#34 ;网站","电子邮件","电话"和他们的价值观。

为什么?或者我如何更好地构建我的JSON以获得像contactPoints这样的嵌入对象。

{
    "name":"test",
    "contactPoints": {
        "website": "http://www.asdf.com",
        "email": "asdf@gmail.com",
        "phone": "(555) 555-5555"
    },
    "deliveryHours": {
        "Monday": "9:00am - 12:00am",
        "Tuesday": "9:00am - 12:00am",
        "Wednesday": "9:00am - 12:00am",
        "Thursday": "9:00am - 12:00am",
        "Friday": "9:00am - 12:00am",
        "Saturday": "9:00am - 12:00am",
        "Sunday": "9:00am - 12:00am"
    }
}

编辑看起来像是缓存数据问题。 NSURLRequest正在缓存页面(我在开发期间正在迅速改变)。解析现在按预期工作。

2 个答案:

答案 0 :(得分:0)

如我所见,您的JSON脚本中没有数组。当你致电[jsonDict objectForKey:@"contactPoints"]时,它将返回一个NSDictionary,而不是NSArray

NSDictionary* contactPoints = [jsonDict objectForKey:@"contactPoints"];
NSString *website= [contactPoints objectForKey:@"website"];

希望这有帮助!

答案 1 :(得分:0)

问题与缓存有关。更改为修复问题的NSURLRequestReloadIgnoringLocalCacheData策略后。我在开发过程中一直在快速更改JSON文件,这导致了问题。

问题中发布的json确实会返回contactPoints和deliveryHours的字典。