我使用json-simple并希望有漂亮的打印用于调试目的.
这是一个非常相关的SO问题:Java中的Pretty-Print JSON
然而,给定线程中的答案不仅修复了缩进,而且还使用键的字符串顺序将项的顺序更改为[a ... z].
有没有办法在不改变JSONObject中项目顺序的情况下修复缩进?
例:
JSONObject myJSon = new JSONObject();
myJSon.put("zzz", 1);
myJSon.put("aaa", 1);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println( gson.toJson(myJSon) );
Run Code Online (Sandbox Code Playgroud)
输出:
{
"aaa": 1,
"zzz": 1
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{
"zzz": 1,
"aaa": 1
}
Run Code Online (Sandbox Code Playgroud)
编辑:我正在使用:org.json.simple.JSONObject
org.json.simple.JSONObjectclass extends java.util.HashMap,这就是为什么你在输出中看到这个属性的顺序的原因.setPrettyPrinting()方法不会改变顺序.您可以从源代码中删除它,没有任何更改.如果您想保留订单,可以使用java.util.LinkedHashMap而不是org.json.simple.JSONObject.
简单的例子:
import java.util.LinkedHashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonProgram {
public static void main(String[] args) throws Exception {
Map<String, Integer> myJSon = new LinkedHashMap<String, Integer>();
myJSon.put("zzz", 1);
myJSon.put("aaa", 1);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(myJSon));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3784 次 |
| 最近记录: |