如何使用 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!)

它不起作用,说 .arrayObjectnil。我也试过.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 结构。为什么说jsonArrayjsonDictionary。顺便说一句,我使用的 API 使用 Swifty JSON。我读到 Codable 具有性能优势。但是 Swifty JSON 似乎很容易使用,不需要创建结构,尤其是当 json 文件有超过 100 个条目时。 ["name": "Tom", "Age": 20] 不是数组,而是字典,所以变量名jsonArray 具有误导性和混淆性。 Codable 更高效且更易于使用,您可以摆脱所有那些 object["key"].stringValue 表达式,因为 Codable 是类型安全的。

以上是关于如何使用 Swifty JSON 连接两个 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swifty 在 Swift 中将 JSON 作为字符串返回

如何使用 Swifty Json 将 POST 请求中的 JSON 数据保存到字典中?

Swifty JSON 响应解析

swifty json 解析数组对象

你能用 Swifty-JSON 搜索 JSON 吗?

使用 Swifty JSON 解析