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

时间:2011-05-31 09:09:15

标签: java json formatting pretty-print

我有一个紧凑的JSON字符串,我希望在Java中很好地格式化它,而不必先将其反序列化 - 例如就像jsonlint.org一样。那里有没有提供这个的图书馆吗?

类似的XML解决方案也很不错。

8 个答案:

答案 0 :(得分:64)

int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);

使用org.json.JSONObject(内置于JavaEE和Android)

答案 1 :(得分:10)

在一行中:

String niceFormattedJson = JsonWriter.formatJson(jsonString)

System.out.println(JsonWriter.formatJson(jsonString.toString()));

json-io libray(https://github.com/jdereg/json-io)是一个小型(75K)库,除了JDK之外没有其他依赖项。

除了漂亮打印JSON之外,您还可以将Java对象(带有循环的整个Java对象图)序列化为JSON,并将其读入。

答案 2 :(得分:6)

如果您使用的是jackson,可以通过在SerializationFeature中配置ObjectMapper轻松实现此目的:

com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();

mapper.configure(SerializationFeature.INDENT_OUTPUT, true);

mapper.writeValueAsString(<yourObject>);

多数民众赞成。

答案 3 :(得分:6)

使用gson。 https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-gson/

www.domain.com/app1
www.domain.com/app2

输出

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(my_bean);

答案 4 :(得分:4)

我认为对于漂亮的印刷品,了解其结构非常有帮助。

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

当然,您可以使用您喜欢的任何JSON库。

答案 5 :(得分:1)

我想要一个非常简单的解决方案:

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>4.5.0</version>
</dependency>

Java代码:

import com.cedarsoftware.util.io.JsonWriter;
//...
String jsonString = "json_string_plain_text";
System.out.println(JsonWriter.formatJson(jsonString));

答案 6 :(得分:1)

使用gson的另一种方法:

__str__

当你没有像susemi99的帖子那样拥有豆子时,可以使用它。

答案 7 :(得分:0)

Underscore-java库具有方法U.formatJson(json)U.formatXml(xml)。我是该项目的维护者。