我从Web服务收到一些json.我使用Touch
JSON库解析这个.
我保留数据以供用户更改某些值,然后我想将其返回给Web服务.
我得到的JSON对象包含对象中的NSDictionary对象,如下所示:
[
{
"id": null,
"created_at": 12332343,
"object": {
"name": "Some name",
"age" : 30
},
"scope": "it stuff",
"kind_id": 1,
"valid": true,
"refering_statement": {
"id": 95
},
"user": {
"id": 1
}
}
]
如果我想更改此字典中的值,我不能,因为TouchJSON返回的对象不可变.
有没有办法让TouchJSON返回可变对象?
或者有没有办法让Objective C制作一个NSDictionary及其所有孩子都可变?
或者我是否必须浏览NSDictionary中的每个NSDictionary并将所有数据复制到可变副本中,然后重新插入所有内容?
希望有人能帮我解决这个问题:)提前谢谢.
最佳答案 TouchJson可以选择返回可变对象而不是正常对象. (我通过查看源代码找到它.)默认是返回它的“副本”,而不是“mutablecopy”.
NSError *error = nil;
jsonString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
CJSONDeserializer *jsondeserializer = [CJSONDeserializer deserializer];
jsondeserializer.scanner.options = kJSONScannerOptions_MutableContainers;
NSMutableDictionary *jsonitems = [[NSMutableDictionary alloc] initWithDictionary:[jsondeserializer deserializeAsDictionary:jsonData error:&error]];