我有一个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字典。我做错了什么,如何解决?
答案 0 :(得分:2)
假设您最初想要分配一个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
答案 1 :(得分:0)
截至今天,SwiftyJSON README.md告诉您使用
json.array = [1,2,3,4]
但实际上看一下MARK下的SwiftyJSON.swift: - Array,扩展名JSON。 array和arrayValue只是get,你应该使用
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)
答案 2 :(得分:-1)
试试这个:
var x = JSON([:])
x["1"] = 1
x["2"] = [2]
x["3"] = ["3":4]
println(x)