让TouchJSON返回可变对象?
我正在从Web服务接收一些JSON。 我使用TouchJSON库parsing这个。 我保持周围的数据为用户更改某些值,然后我想将其返回到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]];
你可以像这样从字典中创build一个可变的字典。
(假设你的jsonparsing字典被命名为jsonDictionary)
NSMutableDictionary *userDictionary = [NSMutableDictionary dictionaryWithDictionary:jsonDictionary];
希望能为你解决。