我需要在我的应用中显示地址列表,同时保持与响应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保持完全相同的顺序?
答案 0 :(得分:0)
正如rmaddy在他们的评论中所说,您发布的JSON是一个字典。字典本质上是无序的,因此也无法保证您从后端获得的顺序。某些服务器实现可能给出一致的顺序,而某些则可能不一致。
如果要确定顺序,则需要将后端系统更改为使用数组而不是字典。
如果您无法控制客户端,但仍想保留JSON中键的顺序,则可能必须自己手动解析JSON,构建键数组,然后使用这些键来以此顺序从字典中获取项目。
答案 1 :(得分:0)
如果数据的顺序很重要,则应将其放入Array
,而不是Dictionary
(本质上是无顺序的,但具有其他人注意到的快速键访问)。请相应地更改您的后端,然后问另一个问题,如果它不起作用。