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

File with string in JSON format , how to read filecontent into NSDictionary

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

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

我知道我们可以通过 NSData 来做 id result = [NSJSON序列化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"
    }
   ]
}

使用NSDatadataWithContentsOfFile方法获取文件的数据(文件路径应该是包中文件的路径;有一种方法可以让你得到一个文件的路径来自应用程序主包的资源)。

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

JSON in string stored in file -> 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;
}