解析 JSON 后无法在 NSDictionary 中创建密钥
Posted
技术标签:
【中文标题】解析 JSON 后无法在 NSDictionary 中创建密钥【英文标题】:Unable to create keys into NSDictionary after parsing JSON 【发布时间】:2015-03-17 07:02:38 【问题描述】:我见过与此类似的主题,但似乎没有一个能解决我的问题。我收到了这个 JSON:
("taskname: 1738 Main St., taskdescription: install flooring, worker: Jim Davis, approver: John Jones",
"taskname: 300 Market St., taskdescription: paint ceiling, worker: John Smith, approver: Bob Johnson"
)
这是我用来最终创建 NSDictionary 的代码:
NSURL *url = [NSURL URLWithString:MY_JSON_URL];
NSData *data = [NSData dataWithContentsOfURL:url];
NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:NULL];
NSArray *JSONarray = [JSONDictionary valueForKeyPath:@"feed.entry.content.$t"];
NSDictionary *taskDictionary = JSONarray[0];
NSLog(@"array content = %@",JSONarray)
数组值是正确的,但是当我尝试键入字典时,该键不存在
NSLog(@"dictionary contents = %@", taskDictionary[@"taskname"]);
我是 JSON 新手,非常感谢任何帮助!
【问题讨论】:
这不是有效的 JSON。它既不是数组[ "object1", "object2" ]
,也不是字典 "key1" : "object1", "key2" : "object2"
这更像是一个数组而不是 JSON。
字符串数组。对 ?你可以JSON Parse from NSString 但你的字符串也不是有效的 JSON 类型
【参考方案1】:
您收到的 JSON 无效,因此键“taskname”不存在。 应采用以下格式:
["taskname": "1738 Main St.", "taskdescription": "install flooring", "worker": "Jim Davis", "approver": "John Jones",
"taskname": "300 Market St.", "taskdescription": "paint ceiling", "worker": "John Smith", "approver": "Bob Johnson"]
【讨论】:
谢谢保罗,这就是我的怀疑。由于所有信息都在那里,有什么方法可以将我收到的内容转换为 NSDictionary 可以接受的格式? 这有点脏,但您可以尝试通过将 ':' 替换为 '": "' 和 ', ' 替换为 '"、"' 来编辑字符串。那么你应该有一个有效的 JSON 字符串以上是关于解析 JSON 后无法在 NSDictionary 中创建密钥的主要内容,如果未能解决你的问题,请参考以下文章
iOS JSON 解析为 NSDictionary,然后使用 SBJson 解析为 NSArray