如何使用 Swifty JSON 连接两个 json 对象
Posted
技术标签:
【中文标题】如何使用 Swifty JSON 连接两个 json 对象【英文标题】:How to concatenate two json objects with Swifty JSON 【发布时间】:2020-07-20 03:50:52 【问题描述】:我正在使用 Swifty JSON (https://github.com/SwiftyJSON/SwiftyJSON)。我在这里搜索并找到了一个接近的(How to combine two SwiftyJSON objects)。我有完全相同的问题。但答案在我的情况下不起作用。我需要连接,而不是合并两个对象。
let jsonArray1 = JSON(["name": "Tome", "Age": 20])
let jsonArray2 = JSON(["name": "Jack", "Age": 30])
我想要的是一个 JSON 对象
"name": "Tom", "Age": 20,"name": "Jack", "Age": 30
我尝试使用
let combined = JSON(jsonArray1.arrayObject! + jsonArray2.arrayObject!)
它不起作用,说 .arrayObject
是 nil
。我也试过.array
也没有用。任何意见表示赞赏。
【问题讨论】:
您的问题含糊不清。 JSON 对象是字典,无法实现所需的输出(没有键的根字典) 顺便说一句,忘记 SwiftyJSON。从 Swift 4 开始,您应该构建数据并使用 Codable @vadian 感谢您的意见。上面想要的输出不能存储在 json 文件中吗?我想这(一个包含多个对象的 json 文件)很常见,对吧? 可以是字典数组,["name": "Tom", "Age": 20,"name": "Jack", "Age": 30]
@LeoDabus 我使用的 API 使用 SwiftyJSON。顺便说一句,我是初学者。我看到很多 2019 年做的教程还在教 SwiftyJSON。另外,在 Codable 中,您必须构建一个所有属性都匹配 JSON 数据结构的结构,对吗?但在 SwiftyJSON 中,您不必构建任何结构。
【参考方案1】:
在松弛频道的帮助下,这是一个解决方案
let jsonArray1 = JSON(["name": "Tom", "Age": 20])
let jsonArray2 = JSON(["name": "Jack", "Age": 30])
var j = [JSON]()
j.append(jsonArray1)
j.append(jsonArray2)
var jbody = JSON(j)
似乎 Swifty JSON 结构在初始化程序中采用了 JSON 实例数组。 jbody
里面有两个 json 对象,这是我想要的。
【讨论】:
为什么不简单得多let jbody = JSON([jsonArray1, jsonArray2])
? jsonArray
仍然是 jsonDictionary
,你应该听从 Leo 的建议,放弃 SwifyJSON
。
@vadian 谢谢!你的代码更简洁。顺便说一句,我很困惑。 jsonArray
是一个 JSON 结构。为什么说jsonArray
是jsonDictionary
。顺便说一句,我使用的 API 使用 Swifty JSON。我读到 Codable 具有性能优势。但是 Swifty JSON 似乎很容易使用,不需要创建结构,尤其是当 json 文件有超过 100 个条目时。
["name": "Tom", "Age": 20]
不是数组,而是字典,所以变量名jsonArray
具有误导性和混淆性。 Codable 更高效且更易于使用,您可以摆脱所有那些 object["key"].stringValue
表达式,因为 Codable 是类型安全的。以上是关于如何使用 Swifty JSON 连接两个 json 对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swifty 在 Swift 中将 JSON 作为字符串返回