json - swift 4 : Keeping the same order when parsing a JSON

标签 json swift nsjsonserialization

我需要在我的应用程序中显示地址列表,同时保持与响应 JSON 相同的顺序。它看起来像这样:

{
"addresses": {
    "e5fdb5ba-7afb-11e8-bead-43321d1a8905": {
        "contact": "Name1",
        "zipCode": "06100"
    },
    "1495b580-7afc-11e8-bead-9f4049791561": {
        "contact": "Name2",
        "zipCode": "06100"
    },
    "e5fdb5ba-7afb-11e8-bead-43321d1a8905": {
        "contact": "Name3",
        "zipCode": "06100"
    },
    "1495b580-7afc-11e8-bead-9f4049791561": {
        "contact": "Name4",
        "zipCode": "06100"
    }
  } 
}

但是当我使用

解析响应时
JSONSerialization.jsonObject(with: data, options: [])

地址的顺序搞混了。有没有办法保持与 JSON 完全相同的顺序?

最佳答案

正如 rmaddy 在他们的评论中所说,您发布的 JSON 是一本字典。字典本质上是无序的,因此也不能保证从后端获得的顺序。有些服务器实现可能会给出一致的顺序,有些可能不会。

如果您想要特定的顺序,您需要更改后端系统以使用数组而不是字典。

如果您无法控制客户端并且仍想保留 JSON 中键的顺序,您可能必须自己手动解析 JSON,构建一个键数组,然后使用这些键来按该顺序从字典中获取项目。

关于json - swift 4 : Keeping the same order when parsing a JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092027/

相关文章:

java - 使用 Json-lib 将 XML 转为 Json

.net - HttpClient.ReadAsAsync<T> 在使用 [Serializable] 时返回空对象

ios - 无法将 NSDictionary 值转换为 json

ios - NSJSONSerialization 产生垃圾

json - 对比 Codable 转换前后的 JSON 数据

javascript - 如何使用发布请求打开新选项卡?

javascript - Highcharts – 如何将轴显示为时间

ios - 为什么点击后它不执行任务 2?

ios - 如何在通知处理程序中同步数据: Swift 4

Swift:计算合并排序中的交换