JAVA JSONArray按倒序排序



JSON数组如下:

[{"BMW": [], "OPEL": [], "Mercedes": []}]

,我想得到

[{"Mercedes": [], "OPEL": [], "BMW": []}]

我怎么能这样做呢?

由于JSONObjects不保持它们的顺序,你建立它们(与它在内存中的处理方式有关),你应该重构数据。

[{"BMW": [], "OPEL": [], "Mercedes": []}]

[{"BMW":[]}, {"OPEL":[]}, {"Mercedes":[]}]

这仍然不能马上帮助你,因为java中的JSONArray似乎没有reverse()方法:(

就像我评论的那样:以相反的顺序构建一个新的JSONArray:

JSONArray newJsonArray = new JSONArray()
for (int i = jsonArray.length()-1; i>=0; i--) {
    newJsonArray.put(jsonArray.get(i));
}

一个小而最好的解决方案是将JSON数组以相反的顺序存储:

    JSONArray array = response.getJSONArray("records");
    for (int i = array.length()-1; i >= 0; i--) {
         // Perform your regular JSON Parsing here
}

你不需要编辑/更改你的JSON

您有一个JSON对象,而不是数组。对象由键-值对组成,但这些对不以任何方式按键排序。事实上,顺序不重要——表示是一样的。

来自ECMAScript规范,复制如下:http://interglacial.com/javascript_spec/a-4.html

4.3.3 Object对象是Object类型的成员。它是一个无序的属性集合,每个属性都包含一个原语值、对象或功能。存储在类的属性中的函数对象被称为方法。