JAVA JSONArray按相反顺序排序

时间:2015-05-26 20:09:43

标签: java android

我有这样的JSON数组:

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

我希望得到

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

我怎么能这样做?

3 个答案:

答案 0 :(得分:6)

由于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));
}

答案 1 :(得分:1)

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

从ECMAScript规范中复制到此处:http://interglacial.com/javascript_spec/a-4.html

  

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

答案 2 :(得分:0)

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

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

您不需要编辑/更改JSON