无法在 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的主要内容,如果未能解决你的问题,请参考以下文章
无法解析数据 JSON alamofire SwiftyJSON
在 Haneke 和 SwiftyJSON 之间转换 JSON