将数据放入Android 4.4错误位置的JSON对象

时间:2016-10-20 11:45:06

标签: android json android-studio

尝试将数据放入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上遇到。我测试了其他版本,它工作正常。请给我一个解决这个问题的方向。

提前致谢。

2 个答案:

答案 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);