我知道,JSON 解析问题被问了一遍又一遍,但我仍然找不到任何答案。
我一直在尝试使用 NSJSONSerialization 读取和解析文本 JSON 文件,但无济于事。
我试过使用来自 NSString 的相同 JSON 数据,它确实有效。
这是代码:
NSError *error;
NSString *jsonString1 = [NSString stringWithContentsOfFile:jsonFilePath
encoding:NSUTF8StringEncoding
error:&error];
NSData *jsonData1 = [jsonString1 dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObject1 = [NSJSONSerialization JSONObjectWithData:jsonData1
options:0
error:&error];
NSString *jsonString2 = @"{\"key\":\"value\"}";
NSData *jsonData2 = [jsonString2 dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObject2 = [NSJSONSerialization JSONObjectWithData:jsonData2
options:0
error:&error];
- 文本文件包含一行:{"key":"value"}
- jsonString1 = @"{"key":"value"}"
- jsonString2 = @"{\"key\":\"value\"}"
- jsonData1 的大小为 23 个字节
- jsonData2 的大小为 15 个字节
- jsonObject1 为零,我收到错误代码 3840
- jsonObject2 是一个有效的字典
似乎问题出在读取文件上,因为 NSStrings 和 NSDatas 不同,但我在这里做错了什么,我该如何解决?
最佳答案
您的文件很可能包含一些触发失败的不可打印字符(例如\0)。打印错误消息会告诉您第一个无效字符出现在什么位置。
例如,尝试打印 "{\"key\":\u{0000}\"value\"}"
,您似乎会得到一个有效的 JSON,但解码失败.
关于ios - 如何从 Objective-C 中的文本文件解析 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883715/