2

我有一个 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 字典。我做错了什么,我该如何解决?

4

3 回答 3

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

于 2015-11-19T18:20:17.700 回答
0

截至今天,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)
于 2015-02-04T00:59:08.477 回答
-1

尝试这个:

var x = JSON([:])

x["1"] = 1
x["2"] = [2]
x["3"] = ["3":4]

println(x)
于 2015-01-30T11:04:21.957 回答