Swift JSON 向现有字典添加新键
Swift JSON add new key to existing dictionary
我正在使用 Alamofire 和 SwiftyJSON 从 API 获取和管理数据
在发出初始请求后,我最终得到了 JSON
类型的嵌套集合
根据 SwiftyJSON 我可以像这样遍历数据
https://github.com/SwiftyJSON/SwiftyJSON#loop
for (key: String, subJson: JSON) in json {
//Do something you want
}
同样,根据 SwiftyJSON,我应该能够像这样设置新值:
https://github.com/SwiftyJSON/SwiftyJSON#setter
json["name"] = JSON("new-name")
我有一个嵌套的数据集合,可以深入挖掘,但无法更改对象和设置新的 key:value 对。我如何才能在 Swift 中做到这一点?
这是我的代码:
for (key: String, stop: JSON) in stops {
var physicalStops = stop["physicalStops"]
for (key: String, physicalStop: JSON) in physicalStops {
println("Prints out \(physicalStop) just fine")
// physicalStop["myNewkey"] = "Somevalue" // DOES NOT WORK (@lvalue is not identical to 'JSON)
// physicalStop["myNewkey"] = JSON("Somevalue") //SAME Story
}
}
基本上我想保持与原始 JSON 对象完全相同的结构,但在每个子对象的第二级嵌套上添加额外的 key:value。
首先,你可以在for-loop中使用var
来让值在循环内可以修改。但是, JSON 是结构,因此它表现为值类型,因此在您的嵌套示例中,您还必须将子项 JSON 重新分配给父项 JSON ,否则它只会修改内部的值循环但不在原始结构中
var json: JSON = ["foo": ["amount": 2], "bar": ["amount": 3]]
for (key: String, var item: JSON) in json {
println("\(key) -> \(item)")
item["price"] = 10
json[key] = item
}
println(json)
下面的代码在 Swift 2 playground 中运行良好,不需要 Swifty:
var json: [String:AnyObject] = ["foo": ["amount": 2], "bar": ["amount": 3]]
for (key,item) in json {
print("\(key) -> \(item)")
let newItem = ["price": 10]
json[key] = newItem
}
print(json)
我正在使用 Alamofire 和 SwiftyJSON 从 API 获取和管理数据 在发出初始请求后,我最终得到了 JSON
类型的嵌套集合根据 SwiftyJSON 我可以像这样遍历数据 https://github.com/SwiftyJSON/SwiftyJSON#loop
for (key: String, subJson: JSON) in json {
//Do something you want
}
同样,根据 SwiftyJSON,我应该能够像这样设置新值: https://github.com/SwiftyJSON/SwiftyJSON#setter
json["name"] = JSON("new-name")
我有一个嵌套的数据集合,可以深入挖掘,但无法更改对象和设置新的 key:value 对。我如何才能在 Swift 中做到这一点?
这是我的代码:
for (key: String, stop: JSON) in stops {
var physicalStops = stop["physicalStops"]
for (key: String, physicalStop: JSON) in physicalStops {
println("Prints out \(physicalStop) just fine")
// physicalStop["myNewkey"] = "Somevalue" // DOES NOT WORK (@lvalue is not identical to 'JSON)
// physicalStop["myNewkey"] = JSON("Somevalue") //SAME Story
}
}
基本上我想保持与原始 JSON 对象完全相同的结构,但在每个子对象的第二级嵌套上添加额外的 key:value。
首先,你可以在for-loop中使用var
来让值在循环内可以修改。但是, JSON 是结构,因此它表现为值类型,因此在您的嵌套示例中,您还必须将子项 JSON 重新分配给父项 JSON ,否则它只会修改内部的值循环但不在原始结构中
var json: JSON = ["foo": ["amount": 2], "bar": ["amount": 3]]
for (key: String, var item: JSON) in json {
println("\(key) -> \(item)")
item["price"] = 10
json[key] = item
}
println(json)
下面的代码在 Swift 2 playground 中运行良好,不需要 Swifty:
var json: [String:AnyObject] = ["foo": ["amount": 2], "bar": ["amount": 3]]
for (key,item) in json {
print("\(key) -> \(item)")
let newItem = ["price": 10]
json[key] = newItem
}
print(json)