put方法在json对象中为第一个jsonobject添加值;

Ros*_*han 3 java json

请考虑以下代码:

JSONObject json = new JSONObject(); 

json.put("one", 1); 

json.put("two", 2); 

json.put("three", 3);
Run Code Online (Sandbox Code Playgroud)

如果我打印jsonobject它打印像这样

{"three":"1","two":"2","one":"1"}
Run Code Online (Sandbox Code Playgroud)

但我想要这样.

{"one":"1","two":"2","three":"3"}
Run Code Online (Sandbox Code Playgroud)

请帮忙.提前致谢.

Sau*_*aul 10

http://www.json.org/javadoc/org/json/JSONObject.html上的文档说:

JSONObject是名称/值对的无序集合.

换句话说,对象的属性是按名称访问的,而不是按位置访问的,默认的序列化形式不保证任何特定的顺序.

严格定位仅适用于阵列:

JSONArray json = new JSONArray();

json.put("1");
json.put("2");
json.put("3");

json.toString(); // results in ["1", "2", "3"]
Run Code Online (Sandbox Code Playgroud)

解决问题的最简单的解决方法是使用sortedKeys()方法并通过按键迭代JSONObject键,以必要的顺序手动生成JSON字符串.实现自定义Comparator也可能有所帮助.