我需要一位JSON专家或者非常了解JSON的人。我有一个通过http请求从API收到的以下JSON结构。 API按itemDistance对数据进行预排序,因为我在查询中指定了该数据。当我收到数据并通过JSONSerialization处理它时,我失去了API所做的itemDistance的排序。这很可能是因为它是字典格式并且需要在数组中。我正在构建一个iOS应用程序。
我的问题是:当我通过JSONSerialization运行时,需要通过locationDistance维护以下JSON结构的确切更改?我正在努力改变下面的格式,所以它在一个数组中。我需要在下方放置和/或移除哪种类型的支架以及它们需要定位的确切位置。
}
"items": {
"234683": {
“itemID": "234683",
“itemCategory": “B",
"itemDistance": 8
},
"467528": {
“itemID": "467528",
“itemCategory": “B",
"itemDistance": "10"
},
"417928": {
“itemID": "417928",
“itemCategory": “A",
"itemDistance": "10"
},
…
}
}
顺便说一句,我尝试在“项目”中的项目列表周围添加方括号,如下所示,但这没有帮助或有所作为。
}
"items": [{
"234683": {
“itemID": "234683",
“itemCategory": “B",
"itemDistance": 8
},
"467528": {
“itemID": "467528",
“itemCategory": “B",
"itemDistance": "10"
},
"417928": {
“itemID": "417928",
“itemCategory": “A",
"itemDistance": "10"
},
…
}]
}
我也是这样做的,但这也没有什么区别。通过JSONSerialization运行时,订单仍然丢失。
}
"items": [
"234683": {
“itemID": "234683",
“itemCategory": “B",
"itemDistance": 8
},
"467528": {
“itemID": "467528",
“itemCategory": “B",
"itemDistance": "10"
},
"417928": {
“itemID": "417928",
“itemCategory": “A",
"itemDistance": "10"
},
…
]
}
答案 0 :(得分:2)
您需要服务器返回字典数组,而不是字典字典。
你想:
{
"items": [{
"itemID": "234683",
"itemCategory": "B",
"itemDistance": 8
},
{
"itemID": "467528",
"itemCategory": "B",
"itemDistance": "10"
},
{
"itemID": "417928",
"itemCategory": "A",
"itemDistance": "10"
}
]
}
或者,如果您无法更改API以删除不必要的字典,则可以将每个字典包装到另一个字典中,然后将这些字典放入数组中,以便保留顺序。
{
"items": [{
"234683": {
"itemID": "234683",
"itemCategory": "B",
"itemDistance": 8
}
},
{
"467528": {
"itemID": "467528",
"itemCategory": "B",
"itemDistance": "10"
}
}, {
"417928": {
"itemID": "417928",
"itemCategory": "A",
"itemDistance": "10"
}
}
]
}
另一种选择是迭代字典键,将每个值字典提取到一个数组中,然后在你的应用程序中对其进行排序。
您可能还想找到创建服务器代码并管理适当纠正措施的程序员;