在 Java 中漂亮打印 JSON
瀏覽人數:1,524最近更新:
一、簡介
在本教程中,我們將深入研究用 Java 格式化 JSON 數據的過程,以增強其可讀性。
通常,在處理大量 JSON 對象時,理解和調試它們可能是一項艱鉅的任務。因此,採用漂亮打印 JSON 對象的做法變得至關重要。
為了實現這一目標,我們將利用 Jackson 和 Gson 庫的功能,它們提供了生成格式良好的 JSON 輸出的便捷方法。
2. 使用 Jackson 的漂亮打印 JSON
要使用 Jackson 漂亮地打印 JSON,我們首先將以下依賴項添加到pom.xml
文件:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
始終使用 Maven 中央存儲庫中的jackson-databind.
2.1.精美印刷按需
為了實現 JSON 的按需漂亮打印,我們可以利用writeWithDefaultPrettyPrinter()
方法:
String uglyJsonString = "{\"one\":\"AAA\",\"two\":[\"BBB\",\"CCC\"],\"three\":{\"four\":\"DDD\",\"five\":[\"EEE\",\"FFF\"]}}";
public String prettyPrintJsonUsingDefaultPrettyPrinter(String uglyJsonString) {
ObjectMapper objectMapper = new ObjectMapper();
Object jsonObject = objectMapper.readValue(uglyString, Object.class);
String prettyJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject);
return prettyJson;
}
結果是格式良好的 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.全球精美印刷
通過全局啟用INDENT_OUTPUT
設置,我們可以生成格式良好且打印美觀的 JSON 字符串。這可確保整個系統中的 JSON 輸出將以可讀的方式保持一致的格式。
讓我們繼續全局啟用INDENT_OUTPUT setting
:
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 的the setPrettyPrinting()
方法GsonBuilder:
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 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議