无法在iOS中使用SwiftyJson将JSON数组或JSON对象分配给JSON

时间:2015-01-30 09:59:22

标签: ios swift swifty-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字典。我做错了什么,如何解决?

3 个答案:

答案 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)