我在尝试将数据放入json对象时遇到了android 4.4的问题。下面是我用来将数据放入json的代码:

JSONObject jsSimple = new JSONObject();
jsSimple.put("a", "1");
jsSimple.put("b", "2");
jsSimple.put("c", "3");
jsSimple.put("d", "4");

我得到的结果是:
{“a”:“1”,“c”:“3”,“d”:“4”,“b”:“2”}
这个问题只在android 4.4上遇到。我测试了另一个版本,效果很好。请给我一个解决这个问题的方向。
提前谢谢。

最佳答案

http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html的文档显示:
JsonObject类表示不可变的对象值(零个或多个名称/值对的无序集合)。
换句话说,对象的属性是按名称访问的,而不是按位置访问的,并且默认的序列化表单不保证任何特定的顺序。
严格的定位仅限于阵列:

JSONObject jsSimple = new JSONObject();
jsSimple.put("a", "1");
jsSimple.put("b", "2");
jsSimple.put("c", "3");
jsSimple.put("d", "4");

解决问题的最简单方法是使用sortedKeys()方法,并通过逐个键迭代JSON键,以任何必要的顺序手动生成JSONObject字符串。实现比较器可能也有帮助。

10-08 18:27