【问题标题】:Unable to create keys into NSDictionary after parsing JSON解析 JSON 后无法在 NSDictionary 中创建密钥
【发布时间】: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 类型

标签: ios objective-c 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 字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多