JAVA JSONArray按相反顺序排序

JAVA JSONArray按相反顺序排序,java,android,Java,Android,我有这样的JSON数组: [{"BMW": [], "OPEL": [], "Mercedes": []}] 我想得到 [{"Mercedes": [], "OPEL": [], "BMW": []}] 我怎么能这样做呢?您有一个JSON对象,而不是数组。一个对象是由键值对组成的,但这些键值对并不是按键排序的。事实上,顺序并不重要——表示形式是一样的 从ECMAScript规范中复制,如下所示: 4.3.3对象对象是对象类型的成员。它是一个无序的属性集合,每个属性都包含一个基元 值、对象或函

我有这样的JSON数组:

[{"BMW": [], "OPEL": [], "Mercedes": []}]
我想得到

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

我怎么能这样做呢?

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

从ECMAScript规范中复制,如下所示:

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


由于JSONObject没有按照您构建它们的顺序(与它在内存中的处理方式有关),您应该重构数据

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

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

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

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

为什么,这有什么意义?原则上同意,但Javascript根据具有属性的对象定义数组,所以…我需要按相反顺序排序。我正在用android开发我的第一个应用程序,我是java初学者。我找不到解决方案,所以我问here@PiraTa,你是什么试图实现?我在列表视图中有一些数据。我希望用户可以用DESC或ASCDownvoted对其进行排序,因为他有一个带有JSONObject的JSONArray。另外,他说的是java,不是js?他想反转JSONArray,而不是在其中找到的对象。就我所能找到的(到目前为止,谷歌搜索了约10分钟)最好的方法是从JSONArray创建一个ArrayList,然后调用Collections.reverse(list),或者只使用for(int i=JSONArray.length()-1;i>=0;i--{/*…*/}构建一个新的JSONArray?