如何用Java漂亮地打印现有的JSON数据?

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)

  • **`org.json.JSONObject`没有内置到JavaEE**中.`JsonObject`的`JSON-P`库是`javax.json.JsonObject`. (4认同)
  • 这个用什么库?因为它不是一个非常有用的答案. (2认同)

小智 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 时,可以使用它。

  • 实例化“JsonParser”现已弃用。请改用静态方法“JsonParser.parseString(json_String_to_print)”。 (2认同)

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,并将其读入.


sus*_*i99 9

使用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)

而已.


Wal*_*inz 4

我认为对于漂亮的打印东西来说,了解它的结构非常有帮助。

要获得结构,您必须解析它。因此,我认为这并不比首先解析您拥有的 JSON 字符串,然后使用上面评论中提到的漂亮打印方法toString更容易。

当然,您可以对任何您喜欢的 JSON 库执行类似操作。