我创建了一个名为Dict.json的文件。该文件的内容是有效的json包含
{" MYDATA":[{ " A&#34:4, " B":14, " C":7 }, { " A&#34:4, " B":12, " C":7 }, { " A":34, " B":154, " C":6 }, { " A":34, " B":162, " C":6 }]}
我想从这个文件创建一个NSDictonary。我尝试了以下但它返回nil。
NSString * filePath = [[NSBundle mainBundle] pathForResource:@" Dict" ofType:@" JSON"]; NSMutableDictionary * newArr1 = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
我也在检查该文件不是nil;
NSData *myData = [NSData dataWithContentsOfFile:filePath];
if (myData) {
NSLog("There is Data in File !!!!")
}
答案 0 :(得分:2)
要加载json
数据,您需要NSJSONSerialization
从文件中提取json
数据
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Dict" ofType:@"json"];
NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
NSMutableDictionary *dic1 = [[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil] mutableCopy];
您的代码仅适用于plist
文件,而不适用于json
文件。
答案 1 :(得分:0)
来自文档
+ (id)dictionaryWithContentsOfFile:(NSString *)path
<强>参数强>
路径
完整或相对路径名。由path标识的文件必须包含 属性列表 的字符串表示形式,其根对象是字典。
返回值
包含路径中字典的新字典,如果存在文件错误或文件内容是字典的无效表示,则为nil。
如上所述,您只能使用不是来自.json的plist文件创建字典+ (id)dictionaryWithContentsOfFile:(NSString *)path
。