我正在为现有网站创建一个应用程序。他们目前具有以下格式的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对象。
Array
NSMutableString
该网站已经投入生产,所以我不能要求他们更改现有结构以返回适当的JSON对象。对他们来说,这将是很多工作。
JSON
因此,在他们改变基础结构之前,有什么方法可以使它们iOS像javascript在它们上面一样地工作website吗?
iOS
javascript
website
任何帮助/建议对我都会非常有帮助。
正确的JSON应该看起来像这样:
[ { "id": "value", "array": [{"id": "value"},{"id": "value"}] }, { "id": "value", "array": [{"id": "value"},{"id": "value"}] } ]
但是,如果您使用的是问题中提供的格式,则需要使字典可变,NSJSONReadingMutableContainers然后NSJSONSerialization针对每个array条目再次调用:
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); } }