我在尝试将数据放入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
字符串。实现比较器可能也有帮助。