我有一个 JSON 对象:
var x: JSON = JSON([:])
x["1"].intValue = 1 //Correct
x["2"].arrayValue = [JSON("2")] //Error
x["3"].dictionaryValue = [3:JSON("3")] //Error
我可以为 x 分配一个整数,但我无法分配任何 JSON 数组或任何 JSON 字典。我做错了什么,我该如何解决?
我有一个 JSON 对象:
var x: JSON = JSON([:])
x["1"].intValue = 1 //Correct
x["2"].arrayValue = [JSON("2")] //Error
x["3"].dictionaryValue = [3:JSON("3")] //Error
我可以为 x 分配一个整数,但我无法分配任何 JSON 数组或任何 JSON 字典。我做错了什么,我该如何解决?
假设您最初想要分配一个 JSON 对象数组:
// doesnt work
x["1"].arrayObject = [ JSON( ["1" : "2"] ), JSON( [ "3" : "4" ] )
尝试这个:
x["1"] = JSON( [ JSON( ["1" : "2"]), JSON( ["3" : "4"] ) ] )
或者:
x["1"] = [ JSON( ["1" : "2"]).object, JSON( ["3" : "4"] ).object ]
至少应该适用于 SwiftyJSON 2.3
截至今天,SwiftyJSON README.md 告诉你使用
json.array = [1,2,3,4]
但实际上看看 MARK 下的 SwiftyJSON.swift: - 数组,扩展 JSON。array 和 arrayValue 只是获取,你应该使用
json.arrayObject = [1,2,3,4]
如果数组元素是本机类型,则此方法有效。如果您想将 [JSON] 分配给 JSON,即将 JSON 对象数组分配给新的 JSON 对象,请尝试此操作
// Patch SwiftyJSON to support constructing a JSON out of [JSON]
extension JSON {
public init(_ jsonArray:[JSON]) {
self.init(jsonArray.map { $0.object })
}
}
因此
json["subarray"] = JSON(someArrayOfJSON)
尝试这个:
var x = JSON([:])
x["1"] = 1
x["2"] = [2]
x["3"] = ["3":4]
println(x)