我的应用程序包中有一个文件-"xyz.txt",只有JSON格式的文本。我想打开文本文件的文件路径,将内容读入NSDictionary。怎么做呢?我已经准备好了JSON字符串。只需要初始化到NSdictionary。如果我直接在代码中初始化,我将需要在每个键和值之前使用大量的@。我想避免这种情况。这就是为什么,我把JSON放在一个文件-"xyz.txt"
我有两种方法1.我读取表单文件并使用[[NSDictionary alloc] initWithContentsOfFile:filePath]分配它;2.我将字符串赋值给NSDictionay,其中有很多@。我想避免一直使用@
我知道我们可以通过NSDataid result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];但即使在这种情况下,我们也需要将string初始化为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"
}
]
}
JSON以字符串形式存储在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;
}
使用NSData
的dataWithContentsOfFile
方法获取文件的数据(文件路径应该是bundle中文件的路径;有一个方法可以从应用程序的主包中获取资源的路径。
然后使用NSJSONSerialization
的JSONObjectWithData
方法从JSON数据中创建一个NSDictionary