如何创建一个包含 2 个数组的字典?

Posted

技术标签:

【中文标题】如何创建一个包含 2 个数组的字典?【英文标题】:How to create a dictionary with 2 arrays inside? 【发布时间】:2016-03-17 11:35:47 【问题描述】:

我想创建一个具有下一个结构的字典,通过 Alamofire 作为 JSON 发送到服务器:


    "user": 
        "firstName": "fName",
         "lastName": null,
         "img": null,
         "books": [
             
                 "id": 1
             , 
                 "id": 2
             
         ]
    ,

    "locale": "en",
    "gender": "male"

对于JSON的这种结构,我尝试了下一个:

let parameters: [[String: [String: String]], [String: String]]

但是有很多闭包,所以我对此感到困惑。你能帮我创建这个结构吗?

【问题讨论】:

我觉得好像***.com/questions/31793155/… 【参考方案1】:

Swift 标准库中的集合类型仅支持同质集合,即集合中的所有元素必须具有相同的类型。所以你不能声明一个数组,它的第一个元素的类型是[String: [String: String]],而它的第二个元素的类型是[String: String],如果这是你想要的。

这行得通:

let parameters = [
    "user": [
        "firstName": "fName",
        "lastName": NSNull(),
        "img": NSNull(),
        "books": [
            [ "id": 1],
            [ "id": 2]
        ]
    ],
    "locale": "en",
    "gender": "male"
]

parameters 的类型是[String: NSObject],其中NSObject 是字典中所有值的超类。请注意使用NSNullnull 值建模,这是NSJSONSerialization 所期望的。

【讨论】:

Alamofire 需要AnyObject,不需要强制NSObject 是的,但是编译器推断的类型是[String: NSObject] 它将我的NSNull() 打印为email = "<null>"; 可以吗?这里就像一个字符串

以上是关于如何创建一个包含 2 个数组的字典?的主要内容,如果未能解决你的问题,请参考以下文章

当另一个数组有一个数字(值)时如何匹配2个数组的字符串值

如果第二个数组的项目包含数组的第一个对象的 id,则合并 Angular 8 中的两个对象数组

我可以创建一个用六个随机数填充 100 个数组的循环吗?

打印 2 个数组的行和列的总和

N 个数组的笛卡尔积

Python的列表和元组的区别