尝试将数据放入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上遇到。我测试了其他版本,它工作正常。请给我一个解决这个问题的方向。
提前致谢。
答案 0 :(得分:3)
http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html处的文档说:
JsonObject
类表示不可变的JSON
对象值(零个或多个名称/值对的无序集合)。
换句话说,对象的属性是按名称访问的,而不是按位置访问的,默认的序列化表单不保证任何特定的顺序。
严格定位仅适用于数组:
JSONObject jsSimple = new JSONObject();
jsSimple.put("a", "1");
jsSimple.put("b", "2");
jsSimple.put("c", "3");
jsSimple.put("d", "4");
解决问题最简单的解决方法是使用 sortedKeys()方法并按键迭代JSONObject
键,手动生成JSON
字符串订购必要。实施比较器也可能有所帮助。
答案 1 :(得分:0)
if you can use Google GSON
is easy to use and also it will avoid bugs a code , just define your DTO class some like
public class Data {
private String key;
private String value;
public Data(String key , String value)
{
this.key = key;
this.value =value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}}
create your list of object
Data data = new Data("a","1");
List<Data> dataList = new ArrayList<Data>();
dataList.add(data); // so on for all object
String json = new Gson().toJson(dataList);