带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary

Posted

技术标签:

【中文标题】带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary【英文标题】:File with string in JSON format , how to read filecontent into NSDictionary 【发布时间】:2015-05-31 11:43:03 【问题描述】:

我的应用程序包中有一个文件“xyz.txt”,其中只有 JSON 格式的文本。 我想打开文本文件的文件路径并将内容读取到 NSDictionary。怎么做。 我已经准备好了我的 JSON 字符串。只需要初始化到 NSdictionary。如果我直接在代码中初始化,我需要很多 @ 在每个键和值之前。我想避免这种情况。这就是原因,我把 JSON 放在一个文件中——“xyz.txt”

我有两种方法—— 1.我读取表单文件并使用 [[NSDictionary alloc] initWithContentsOfFile:filePath] 分配它; 2.我用很多@将字符串分配给NSDictionay。 我想避免一直使用@

我知道我们可以通过 NSData id 结果 = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

但即使在这种情况下,我们也需要使用 @ 为所有键和值初始化字符串到 NSData。

任何可以从文本文件中读取 json 并将输出分配给 NSDictionary 的解决方案


"ABC": [
    
      "id": "01",
      "score": "0.2"
    ,
    
      "id": "02",
      "score": "0.2"
    
  ],
  "XYZ": [
    
      "id": "01",
      "score": "0.9"
    ,
    
      "id": "02",
      "score": "0.9"
    
   ],
  "PQR": [
    
      "id": "01",
      "score": "0.9"
    ,
    
      "id": "02",
      "score": "0.3"
    ,
    
      "id": "03",
      "score": "0.2"
    
   ]

【问题讨论】:

How do I deserialize a JSON string into an NSDictionary? (For ios 5+)的可能重复 [[NSDictionary alloc] initWithContentsOfFile:filePath];使用上面我可以初始化一个 NSDictionary,但是如何做,任何例子。因为,我已经准备好了我的 JSON 字符串。只需要初始化到 NSdictionary。如果我直接在代码中初始化,我需要很多 @ 在每个键和值之前。我想避免这种情况。这就是原因,我将 JSON 放在一个文件中 先搜索如何加载文件数据,再搜索如何将JSON数据转化为对象图 【参考方案1】:

存储在文件中的字符串中的 JSON -> NSDictionary

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyDict" ofType:@"text"];
NSData * myDictData = [NSData dataWithContentsOfFile:filePath];
NSError *error;
NSDictionary * myDictionary = [NSJSONSerialization JSONObjectWithData:myDictData
                                                     options:NSJSONReadingMutableContainers
                                                       error:&error];

if (error != nil)

    NSLog(@"Error parsing JSON:\n%@",error.userInfo);
    return;

【讨论】:

【参考方案2】:

使用NSDatadataWithContentsOfFile方法获取文件的数据(文件路径应该是bundle中文件的路径;有一种方法可以从app main bundle中获取资源的路径)。

然后使用NSJSONSerializationJSONObjectWithData方法从JSON数据中创建一个NSDictionary

【讨论】:

是的,我正在寻找类似从文件中整体读取字符串的东西。谢谢 当您想在 iOS 应用程序中保留一些静态数据并稍后在运行时读取时,它实际上非常方便。我们可以使用从文件中读取。我不明白为什么不能为 NSDictionary 做同样的事情 @SunilPanda 我同意它很有用。所以你能够通过使用 NSData 加载文件来实现你的目标?

以上是关于带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

下载 JSON 文件,但解析显示不可读的字符 [重复]

在angularjs中发送带有%字符的json时出现格式错误的uri错误

根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小

将可读格式的json.dumps写入Python3中的文件[重复]

Python-json模块

解析并写入 JSON Lines 格式文件