首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TouchJSON是否返回可变对象?

TouchJSON是否返回可变对象?
EN

Stack Overflow用户
提问于 2011-03-09 15:51:28
回答 2查看 493关注 0票数 4

我收到了一些来自web服务的json。我使用TouchJSON库解析这一点。我将数据保存在周围,以便用户更改某些值,然后将其返回给web服务。

我得到的JSON对象包含对象中的NSDictionary对象,如下所示:

代码语言:javascript
复制
[
    {
        "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返回可变对象的方法吗?

还是有办法让目标C使NSDictionary及其所有的子级都是可变的?

还是只需要遍历NSDictionary中的每个NSDictionary并将所有数据复制到一个可变副本中,然后重新插入所有内容?

希望有人能帮我解决这个问题:)提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-09-08 14:34:26

TouchJson可以选择返回可变对象而不是普通对象。(我通过查看源代码找到了它。)默认情况下,返回的是“复制”,而不是“可变表”。

代码语言:javascript
复制
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]];
票数 2
EN

Stack Overflow用户

发布于 2011-03-09 17:17:22

您可以从这样的字典中创建一个可变字典。

(假设您的json解析字典名为jsonDictionary)

代码语言:javascript
复制
NSMutableDictionary *userDictionary = [NSMutableDictionary dictionaryWithDictionary:jsonDictionary];

希望这能帮你解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5248321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档