gpt4 book ai didi

iphone - 使用 TouchJSON 反序列化复杂的 JSON 结果(字典数组)

转载 作者:行者123 更新时间:2023-12-03 18:20:54 24 4
gpt4 key购买 nike

我昨晚用 TouchJSON 做了一些测试,对于简单的情况来说,它通常运行得很好。我使用以下代码从文件中读取一些 JSON 内容,并将其反序列化:

NSString *jsonString = [[NSString alloc] initWithContentsOfFile:@"data.json"];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;
NSDictionary *items = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
NSLog(@"total items: %d", [items count]);
NSLog(@"error: %@", [error localizedDescription]);

如果我的文件中有一个非常简单的 JSON 对象(即字典),那么效果很好:

{"id": "54354", "name": "boohoo"}

这样我就能够访问值数组,因为我想根据列表中的索引获取项目:

NSArray *items_list = [items allValues];
NSString *name = [items_list objectAtIndex:1];

(我知道我可以使用字典 API 获取姓名)

现在我想反序列化一个半复杂的 JSON 字符串,它代表一个字典数组。此类 JSON 字符串的示例如下:

[{"id": "123456", "name": "touchjson"}, {"id": "3456", "name": "bleh"}]

当我尝试针对 data.json 文件中的新内容运行上面相同的代码时,我没有得到任何结果。我的 NSLog() 调用显示“总项目数:0”,并且 NSError 对象中没有返回任何错误。

有任何关于发生什么事的线索吗?我完全不知道该怎么做,因为 TouchJSON 没有太多可用的文档,使用示例也更少。

最佳答案

我是 TouchJSON 的作者。

你的最外层对象应该是字典而不是数组。除了字典之外的任何东西都是不合法的。如果您必须将数组作为最外层的对象,请使用该方法(该方法在技术上已弃用,但不会很快出现)

- (id)deserialize:(NSData *)inData error:(NSError **)outError;

参见:http://www.json.com/json-schema-proposal/有关什么是合法的 JSON 和什么是不合法的 JSON 的更多信息。

关于iphone - 使用 TouchJSON 反序列化复杂的 JSON 结果(字典数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/288412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com