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

Posted

技术标签:

【中文标题】无法在 iOS 中使用 SwiftyJson 将 JSON 数组或 JSON 对象分配给 JSON【英文标题】:Cannot assign JSON array or JSON object to a JSON using SwiftyJson in iOS 【发布时间】:2015-01-30 09:59:21 【问题描述】:

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

【问题讨论】:

【参考方案1】:

假设您最初想分配一个 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

【讨论】:

【参考方案2】:

截至今天,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)

【讨论】:

【参考方案3】:

试试这个:

var x = JSON([:])

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

println(x)

【讨论】:

嗨。我给出的示例不是我正在处理的确切代码。我想在 JSON 对象中放置一个 JSON 数组,我正在寻找一种方法来做到这一点。以上只是我想要实现的一个例子。 @Rishi 像x["2"] = [2,3,4,5] 这样分配数组,这行不通? 它有效。但那是一个数组。我想分配一个 JSON 数组。 @Rishi 我有点困惑。什么是 JSON 数组? @Rishi x["2"] = [2,3,4,5] 之后,我们可以打印x 并看到json中打印的数组。这并不意味着它现在是一个 JSON 数组?

以上是关于无法在 iOS 中使用 SwiftyJson 将 JSON 数组或 JSON 对象分配给 JSON的主要内容,如果未能解决你的问题,请参考以下文章

IOS应用程序性能太慢,无法使用swiftyjson解析数据[关闭]

iOS:使用 HanekeSwift 和 SwiftyJSON

使用 SwiftyJSON iOS 解析 JSON 响应

SwiftyJson 无法设置值

无法使用 AlamoFire 和 SwiftyJSON 解析 JSON

数据未使用 Alamofire + SwiftyJSON 加载到 UITableView