解析JSON数组返回空白数组

时间:2015-01-29 11:16:43

标签: ios iphone json

我有一个类似的数组。

    {"Hotweeks":[{"Image":"http://www.example.com/wp-content/uploads/0970E01L.jpg","Description":"Ocean Shores, WA","PostTitle":"Windjammer Condominiums"},
    {"Image":"","Description":"","PostTitle":"0970O01L"},
    {"Image":"","Description":"","PostTitle":"0970I08L"},
    {"Image":"","Description":"","PostTitle":"0970I06L"},
    {"Image":"","Description":"","PostTitle":"0970I04L"},
    {"Image":"","Description":"","PostTitle":"0970i03L"},
    {"Image":"","Description":"","PostTitle":"0970I02L"},
    {"Image":"","Description":"","PostTitle":"0970I01L"},
    {"Image":"","Description":"","PostTitle":"0970E02L"},
    {"Image":"","Description":"","PostTitle":"0970E01L"},
    {"Image":"http://www.example.com/wp-content/uploads/0936E01L.jpg","Description":"Manson, WA","PostTitle":"Wapato Point"},
    {"Image":"","Description":"","PostTitle":"0936O05L"},
    {"Image":"","Description":"","PostTitle":"0936O04L"},
    {"Image":"","Description":"","PostTitle":"0936O03L"},
    {"Image":"","Description":"","PostTitle":"0936O02L"},
    {"Image":"","Description":"","PostTitle":"0936O01L"},
    {"Image":"","Description":"","PostTitle":"0936I01L"},
    {"Image":"","Description":"","PostTitle":"0936E03L"},
    {"Image":"","Description":"","PostTitle":"0936E02L"},
    {"Image":"","Description":"","PostTitle":"0936E01L"}]}

我正在尝试使用以下代码进行解析。

NSArray *array = [NSJSONSerialization JSONObjectWithData:[returnString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&error];
        NSLog(@"Size of array is %ld",[array count]);


        NSDictionary *dictionary = [array objectAtIndex:0];
        NSString *test = [dictionary objectForKey:@"Image"];
        NSLog(@"Value for image is %@",test);

这在Nslog中返回null。

2 个答案:

答案 0 :(得分:0)

 …"Description":"Ocean Shores, WA,"PostTitle":…

"之后缺少Ocean Shores, WA。它应该是

 …"Description":"Ocean Shores, WA","PostTitle":…

使用JSON验证程序检查此类事物。有很多可供选择。我使用的是Chrome应用JSON Lint和JSON编辑器。

答案 1 :(得分:0)

Json文件的顶层是一个对象,而不是一个数组(它不以'['开头)。话虽这么说,如果你检查array这样的类型:NSLog("%@", [array class]你可能会看到它是一个NSDictionary。 要获得阵列,您可以这样做:

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:[returnString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&error];
NSArray *array = jsonDict[@"Hotweeks"];

NSLog(@"Size of array is %ld",[array count]);

NSDictionary *dictionary = [array objectAtIndex:0];
NSString *test = [dictionary objectForKey:@"Image"];
NSLog(@"Value for image is %@",test);