小编典典

iOS 7中的JSON解析

json

我正在为现有网站创建一个应用程序。他们目前具有以下格式的JSON:

[

   {
       "id": "value",
       "array": "[{\"id\" : \"value\"} , {\"id\" : \"value\"}]"
   },
   {
       "id": "value",
       "array": "[{\"id\" : \"value\"},{\"id\" : \"value\"}]"
   } 
]

他们使用Java脚本将\字符转义后解析。

我的问题是当我使用以下命令在iOS中解析它时:

NSArray *result = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&localError];

并这样做:

NSArray *Array = [result valueForKey:@"array"];

而不是Array我得到了NSMutableString对象。

  • 该网站已经投入生产,所以我不能要求他们更改现有结构以返回适当的JSON对象。对他们来说,这将是很多工作。

  • 因此,在他们改变基础结构之前,有什么方法可以使它们iOSjavascript在它们上面一样地工作website吗?

任何帮助/建议对我都会非常有帮助。


阅读 272

收藏
2020-07-27

共1个答案

小编典典

正确的JSON应该看起来像这样:

[
    {
        "id": "value",
        "array": [{"id": "value"},{"id": "value"}]
    },
    {
        "id": "value",
        "array": [{"id": "value"},{"id": "value"}]
    }
]

但是,如果您使用的是问题中提供的格式,则需要使字典可变,NSJSONReadingMutableContainers然后NSJSONSerialization针对每个array条目再次调用:

NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if (error)
    NSLog(@"JSONObjectWithData error: %@", error);

for (NSMutableDictionary *dictionary in array)
{
    NSString *arrayString = dictionary[@"array"];
    if (arrayString)
    {
        NSData *data = [arrayString dataUsingEncoding:NSUTF8StringEncoding];
        NSError *error = nil;
        dictionary[@"array"] = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
        if (error)
            NSLog(@"JSONObjectWithData for array error: %@", error);
    }
}
2020-07-27