neu*_*242 47 java formatting json pretty-print
我有一个紧凑的JSON字符串,我想在Java中很好地格式化它,而不必先将它反序列化 - 例如就像jsonlint.org那样.有没有提供这个的图书馆?
类似的XML解决方案也很不错.
Hea*_*ers 68
int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);
Run Code Online (Sandbox Code Playgroud)
使用org.json.JSONObject(内置于JavaEE和Android)
小智 11
使用 gson 的另一种方法:
String json_String_to_print = ...
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
return gson.toJson(jp.parse(json_String_to_print));
Run Code Online (Sandbox Code Playgroud)
当您没有 susemi99 的帖子中的 bean 时,可以使用它。
Joh*_*urt 10
在一行中:
String niceFormattedJson = JsonWriter.formatJson(jsonString)
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println(JsonWriter.formatJson(jsonString.toString()));
Run Code Online (Sandbox Code Playgroud)
json-io libray(https://github.com/jdereg/json-io)是一个小型(75K)库,除了JDK之外没有其他依赖项.
除了漂亮打印JSON之外,您还可以将Java对象(带有循环的整个Java对象图)序列化为JSON,并将其读入.
使用gson.https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-gson/
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(my_bean);
Run Code Online (Sandbox Code Playgroud)
产量
{
"name": "mkyong",
"age": 35,
"position": "Founder",
"salary": 10000,
"skills": [
"java",
"python",
"shell"
]
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果使用的是杰克逊,你可以很容易地配置做到这一点SerializationFeature在你的ObjectMapper:
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.writeValueAsString(<yourObject>);
Run Code Online (Sandbox Code Playgroud)
而已.
我认为对于漂亮的打印东西来说,了解它的结构非常有帮助。
要获得结构,您必须解析它。因此,我认为这并不比首先解析您拥有的 JSON 字符串,然后使用上面评论中提到的漂亮打印方法toString更容易。
当然,您可以对任何您喜欢的 JSON 库执行类似操作。