我有这样的JSON数组:
[{"BMW": [], "OPEL": [], "Mercedes": []}]
我希望得到
[{"Mercedes": [], "OPEL": [], "BMW": []}]
我怎么能这样做?
答案 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