JSON 维护数组排序的格式

JSON format for maintaining array sorting

我需要一位 JSON 专家或非常了解 JSON 的人。我通过 http 请求从 API 收到以下 JSON 结构。 API 按 itemDistance 对数据进行预排序,因为我在查询中指定了它。当我收到数据并通过 JSON 序列化处理它时,我失去了 API 所做的按 itemDistance 的排序。这很可能是因为它是字典格式并且需要在数组中。我正在构建一个 iOS 应用程序。

我的问题是:当我 运行 通过 JSON序列化?我正在努力改变下面的格式,所以它在一个数组中。我需要在下面放置什么类型的括号 and/or remove 以及它们需要放置的确切位置。

}
    "items": {
            "234683": {
                “itemID": "234683",
                “itemCategory": “B",
                "itemDistance": 8
            },
            "467528": {
                “itemID": "467528",
                “itemCategory": “B",
                "itemDistance": "10"

            },
            "417928": {
                “itemID": "417928",
                “itemCategory": “A",
                "itemDistance": "10"

            },

    …


    }
}

顺便说一句,我尝试在 "items" 中的项目列表周围添加方括号,如下所示,但这没有帮助或有所作为。

}
                "items": [{
                        "234683": {
                            “itemID": "234683",
                            “itemCategory": “B",
                            "itemDistance": 8
                        },
                        "467528": {
                            “itemID": "467528",
                            “itemCategory": “B",
                            "itemDistance": "10"

                        },
                        "417928": {
                            “itemID": "417928",
                            “itemCategory": “A",
                            "itemDistance": "10"

                        },

                …


                }]
}

我也是这样做的,但是这也没有什么区别。 运行通过JSON序列化运行时,订单仍然丢失。

}
        "items": [
                "234683": {
                    “itemID": "234683",
                    “itemCategory": “B",
                    "itemDistance": 8
                },
                "467528": {
                    “itemID": "467528",
                    “itemCategory": “B",
                    "itemDistance": "10"

                },
                "417928": {
                    “itemID": "417928",
                    “itemCategory": “A",
                    "itemDistance": "10"

                },

        …


        ]
}

您需要服务器 return 字典数组,而不是字典的字典。

你想要:

{
    "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"

            }
        }
    ]
}

另一种选择是遍历字典键,将每个值字典提取到一个数组中,然后在您的应用程序中对其进行排序。

您可能还想找到创建服务器代码的程序员并采取适当的纠正措施;