如何在序列化为 json 之前将 NSDictionary 添加到另一个 NSDictionary

Posted

技术标签:

【中文标题】如何在序列化为 json 之前将 NSDictionary 添加到另一个 NSDictionary【英文标题】:How to add NSDictionary to another NSDictionary before serializing to json 【发布时间】:2014-07-23 21:53:48 【问题描述】:

我是 ios 编程新手。我将数据放在 NSDictionary 中,然后使用 AFJSONRequestSerializer 序列化为 json,然后再将其发送到服务器。

现在,如果我的 json 具有简单的结构,例如键 -> 值对,那么我可以轻松做到,但如果我的结构是这样的 -

"person" =     (
                
                    "location" =             
                        city = "Manila";
                        Country = "Phillipines";
                    ;
            image = "http://mymanila.com/1.png";
            link ="http://mymanila.com/1.html"
        
    );

我的问题是如何放置位置,它本身是另一个具有键值对的字典?谢谢。

【问题讨论】:

【参考方案1】:

给你。

NSDictionary *locationDictionary = @

    @"city" : @"Manila",
    @"Country" : @"Phillipines"
;


NSDictionary *personDictionary = @

    @"location" : locationDictionary,
    @"image" : @"http://mymanila.com/1.png",
    @"link" : @"http://mymanila.com/1.html"
;

NSDictionary *fullDictionary = @

    @"person" : personDictionary
;

现在,只需序列化 fullDictionary

【讨论】:

【参考方案2】:

像这样:

NSMutableDictionary* person = [NSMutableDictionary dictionary];

NSDictionary* location = @@"city":@"Manila", @"Country":@"Phillipines";
[person setObject:location forKey:@"location"];
[person setObject:@"http://mymanila.com/1.png" forKey:@"image"];
[person setObject:@"http://mymanila.com/1.html" forKey:@"link"];

然后您可以像这样将其转换为 JSON:

NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:person];
id jsonObject = [NSJSONSerialization JSONObjectWithData:dictData options:NSJSONReadingMutableContainers error:nil];

【讨论】:

字面量语法和setObject的丑陋组合,还是二选一吧。

以上是关于如何在序列化为 json 之前将 NSDictionary 添加到另一个 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SqlAlchemy 结果序列化为 JSON?

将表单数据序列化为 JSON 时如何保留值类型

如何将属性序列化为 json 对象?

将小数序列化为 JSON,如何四舍五入?

如何将sql查询序列化为json?

如何将表行序列化为 json 对象