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