Swift 4:解析JSON时保持相同的顺序

问题描述 投票:0回答:2

我需要在我的应用程序中显示地址列表,同时保持与响应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完全相同的顺序?

json swift nsjsonserialization
2个回答
0
投票

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

如果您需要某个订单,则需要更改后端系统以使用数组而不是字典。

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


0
投票

如果您的数据顺序很重要,您应该将其放入Array,而不是Dictionary(这本身就没有订单,但有其他人注意到的快速键控访问权限)。请相应更改后端,如果不起作用,请提出其他问题。

© www.soinside.com 2019 - 2024. All rights reserved.