我的应用程序包中有一个文件 - “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"
}
]
}
答案 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
。