ios - 如何从 Objective-C 中的文本文件解析 JSON 数据

标签 ios objective-c json text-files

我知道,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/

相关文章:

iPhone 3GS +/iPad 1 + 最大硬件音频采样率

WKWebView 中的 Javascript - evaluateJavaScript 与 addUserScript

ios - MonoTouch,在 UIImageView 上绘制裁剪区域层

ios - 如何对自定义 NSArray 进行排序?

javascript - JSON.parse(JSON.stringify(e)) 将对象转换为字符串

javascript - backbone 从外部 json 填充集合

iphone - iOS 5 NSNumber 错误

ios - 核心数据是否支持自定义域对象模型?

c# - Objective-C <-> 单桥

javascript - 从 Web 服务器中提取 json 数据到文本中