我在使用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
}
]
]
答案 0 :(得分:1)
在创建Array
或Dictionary
时,您不应该执行任何类型的循环/条件制作代码块。为此,您需要在外部执行该段代码,创建变量并使用它。
请尝试这种方式。
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
]