iOS JSON解析麻烦

Posted

技术标签:

【中文标题】iOS JSON解析麻烦【英文标题】:iOS JSON parse trouble 【发布时间】:2013-04-24 05:11:27 【问题描述】:

我应该如何解析带有格式的 JSON:


"1": 
    "name": "Бекон",
    "unit": "гр."
,
"2": 
    "name": "Бульон куриный",
    "unit": "ст."

和:


  "recipeCode" : "00001",
  "inCategory" : "12",
  "recipe" : "Зимний тыквенный суп",
  "difficulty" : 2,
  "personCount" : 4,
  "prepHour" : 1,
  "prepMin" : 30,
  "comments" : "При подаче добавить сметану, крутоны и присыпать сыром",
  "ingredients" : 
    "2" : 3,
    "11" : 2,
    "13" : 1,
    "14" : 2,
    "19" : 1
  

第二个我什至没有尝试...但是第一个我遇到了一些问题。我这样做:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Ingredients" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSError *error = nil;
NSDictionary *ingredients = [NSJSONSerialization JSONObjectWithData:myData options:kNilOptions error:&error];

比我有两个键/值对的 ingredient 字典。它们都包含 key“1”和 value“1 键/值对”,而没有关于“名称”或“单位”值的任何内容。

关于如何正确解析此类 JSON 的任何帮助

【问题讨论】:

当我执行您的代码时,JSON 被正确解析。请提供更好的说明,说明为什么它不适合您。你能 NSLog 字典并包含你的输出吗? NSLog 显示所有内容(但“调试窗口”未显示).. 好的,这可行,但如何读取这些内部数据? 你想如何显示数据? 【参考方案1】:

你正在正确解析它,你将得到的输出将在字典中

解析将输出作为 objects as NSDictionaryarray as NSArray

所以在您的情况下,键 1 和键 2 本身具有 NSDictionary 的值

NSDictionary *dict1 = [ingredients objectForKey:@"1"];
NSDictionary *dict2 = [ingredients objectForKey:@"2"];

和价值为

NSString *name=[dict1 objectForKey:@"name"];
NSString *unit=[dict1 objectForKey:@"unit"];

【讨论】:

是的!我明白它是如何工作的。谢谢!所以第二个文件是一个字典,而 ingredients 是一个包含字典的对象。我说的对吗? 是的,就是这样。如果是对象表示,那么它是字典,如果是数组 [],那么它是 nsarray 返回

以上是关于iOS JSON解析麻烦的主要内容,如果未能解决你的问题,请参考以下文章

使用swift通过模型解析JSON到对象 - 解码int / string麻烦

JSON解析

java解析json字符串数据

iOS中JSON解析和XML解析的区别

json解析错误怎么办?

iOS开发之网络数据解析--JSON解析简介