昨晚我用 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 的文档,而且使用示例也更少。