我需要在我的应用程序中显示地址列表,同时保持与响应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,构建一个键数组,然后使用这些键来获取项从该字典中的顺序。
如果您的数据顺序很重要,您应该将其放入Array
,而不是Dictionary
(这本身就没有订单,但有其他人注意到的快速键控访问权限)。请相应更改后端,如果不起作用,请提出其他问题。