在Swift中创建一个特定的JSON结构

时间:2015-05-21 13:59:44

标签: ios json swift

我在使用Swift在JSON中创建特定结构时遇到了问题。我使用Swifty JSON进行解析,但我无法弄清楚如何创建一个。

我有这个数组,由Id' s和购物篮中的产品数量填充。我需要将数组放入我的JSON中,但我不知道如何。

如果你可以帮助我,我会很高兴:)

    var productArray = Array<(id: Int,quantity: Int)>()

    let jsonObject: [String: AnyObject] = [
        "order": 1,
        "client" : 1,
        "plats": [
            for product in productArray
            {
            "id": product.id
            "quantity": product.quantity
            }
        ]
    ]

2 个答案:

答案 0 :(得分:1)

在创建ArrayDictionary时,您不应该执行任何类型的循环/条件制作代码块。为此,您需要在外部执行该段代码,创建变量并使用它。

请尝试这种方式。

var productArray = Array<(id: Int,quantity: Int)>()

    var prods = [[String:Int]]()
    for product in productArray
    {
        var eachDict = [String:Int]()
        eachDict["id"] =  product.id
        eachDict["quantity"] = product.quantity
        prods.append(eachDict)
    }

    let jsonObject: [String: AnyObject] = [
        "order": 1,
        "client" : 1,
        "plats": prods
    ]

答案 1 :(得分:1)

在定义字典时,您无法开始循环浏览内容。这是另一种方法。

首先,创建你的数组:

var productArray = Array<(id: Int,quantity: Int)>()

添加一些产品(用于测试):

productArray += [(123, 1000)]
productArray += [(456, 50)]

将此数组映射到新的词典数组:

let productDictArray = productArray.map { (product) -> [String : Int] in
    [
        "id": product.id,
        "quantity": product.quantity
    ]
}

在JSON对象中使用新的映射数组:

let jsonObject: [String: AnyObject] = [
    "order": 1,
    "client" : 1,
    "plats": productDictArray
]