用于维护数组排序的JSON格式

时间:2017-05-31 22:49:31

标签: ios json json-serialization

我需要一位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"

                },

        …


        ]
}

1 个答案:

答案 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"

            }
        }
    ]
}

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

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

enter image description here