使用JSON格式的字符串文件,如何将filecontent读入NSDictionary

时间:2015-05-31 11:43:03

标签: ios json file nsdictionary

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

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

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

2 个答案:

答案 0 :(得分:2)

存储在文件中的字符串中的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;
}

答案 1 :(得分:1)

使用NSData的{​​{1}}方法获取文件的数据(文件路径应该是包中文件的路径;有一种方法可以从中获取资源的路径应用主要包)。

然后使用dataWithContentsOfFile的{​​{1}}方法从JSON数据创建NSJSONSerialization