带有 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】:使用NSData
的dataWithContentsOfFile
方法获取文件的数据(文件路径应该是bundle中文件的路径;有一种方法可以从app main bundle中获取资源的路径)。
然后使用NSJSONSerialization
的JSONObjectWithData
方法从JSON数据中创建一个NSDictionary
。
【讨论】:
是的,我正在寻找类似从文件中整体读取字符串的东西。谢谢 当您想在 iOS 应用程序中保留一些静态数据并稍后在运行时读取时,它实际上非常方便。我们可以使用从文件中读取。我不明白为什么不能为 NSDictionary 做同样的事情 @SunilPanda 我同意它很有用。所以你能够通过使用 NSData 加载文件来实现你的目标?以上是关于带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章
在angularjs中发送带有%字符的json时出现格式错误的uri错误
根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小