1. 概述
在这个教程中,我们将深入探讨如何在Java中格式化JSON数据,以提高其可读性。
当处理复杂的JSON对象时,理解和调试它们可能是一项艰巨的任务。因此,采用美化JSON对象的实践变得至关重要。
我们将利用Jackson和Gson库的能力来实现这一目标,这些库提供了生成格式良好的JSON输出的便捷方法。
2. 使用Jackson进行美化JSON
2.1. 需求时美化JSON
为了实现按需美化JSON,我们可以使用writeWithDefaultPrettyPrinter()
方法:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
结果将得到格式化的JSON对象:
@Test
public void shouldPrettyPrintJsonStringUsingDefaultPrettyPrinter() throws JsonProcessingException {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintJsonUsingDefaultPrettyPrinter(uglyJsonString);
System.out.println(formattedJsonString);
}
// output:
{
"one" : "AAA",
"two" : [ "BBB", "CCC" ],
"three" : {
"four" : "DDD",
"five" : [ "EEE", "FFF" ]
}
}
2.2. 全局美化JSON
通过全局启用INDENT_OUTPUT
设置,我们可以确保整个系统生成的JSON字符串都以一致的可读方式格式化。现在让我们全局启用INDENT_OUTPUT
设置:
public String prettyPrintUsingGlobalSetting(String uglyJsonString) {
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
Object jsonObject = mapper.readValue(uglyJsonString, Object.class);
String prettyJson = mapper.writeValueAsString(jsonObject);
return prettyJson;
}
结果是格式化的JSON对象:
@Test
public void shouldPrettyPrintJsonStringUsingGlobalSetting() throws JsonProcessingException {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGlobalSetting(uglyJsonString);
System.out.println(formattedJsonString);
}
// output:
{
"one" : "AAA",
"two" : [ "BBB", "CCC" ],
"three" : {
"four" : "DDD",
"five" : [ "EEE", "FFF" ]
}
}
3. 使用Gson美化JSON
首先,添加Gson的Maven依赖:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
始终从Maven中央仓库使用最新版本的gson。为了美化JSON,我们将使用GsonBuilder
的setPrettyPrinting()
方法:
public String prettyPrintUsingGson(String uglyJson) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement jsonElement = JsonParser.parseString(uglyJsonString);
String prettyJsonString = gson.toJson(jsonElement);
return prettyJsonString;
}
结果是格式化的JSON对象:
@Test
public void shouldPrettyPrintJsonStringUsingGson() {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGson(uglyJsonString);
System.out.println(formattedJsonString);
}
// output:
{
"one": "AAA",
"two": [
"BBB",
"CCC"
],
"three": {
"four": "DDD",
"five": [
"EEE",
"FFF"
]
}
}
4. 总结
在这篇文章中,我们探讨了在Java中实现JSON美化的方法。
本文的示例代码可以在GitHub上找到。