Java JSON Pretty-Print
1. Jackson을 이용한 JSON Pretty Print
Jackson을 사용하여 JSON을 예쁘게 인쇄하려면 pom.xml
파일에 다음 종속성을 추가한다.
1
2
3
4
5
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
1) On-Demand 예쁜 인쇄
요청에 따라 JSON을 예쁘게 인쇄하려면 writeWithDefaultPrettyPrinter()
메서드를 활용하면 된다.
1
2
3
4
5
6
7
8
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 객체이다.
1
2
3
4
5
6
@Test
public void shouldPrettyPrintJsonStringUsingDefaultPrettyPrinter() throws JsonProcessingException {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintJsonUsingDefaultPrettyPrinter(uglyJsonString);
System.out.println(formattedJsonString);
}
결과이다.
1
2
3
4
5
6
7
8
{
"one" : "AAA",
"two" : [ "BBB", "CCC" ],
"three" : {
"four" : "DDD",
"five" : [ "EEE", "FFF" ]
}
}
2) Globally 예쁜 인쇄
INDENT_OUTPUT
설정을 전역적으로 활성화하면 보기 좋게 인쇄된 올바른 형식의 JSON 문자열을 생성할 수 있다. 이렇게 하면 시스템 전체의 JSON 출력이 읽기 쉬운 방식으로 일관되게 형식화된다.
INDENT_OUTPUT
설정을 전역적으로 활성화 한다.
1
2
3
4
5
6
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 객체이다.
1
2
3
4
5
6
@Test
public void shouldPrettyPrintJsonStringUsingGlobalSetting() throws JsonProcessingException {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGlobalSetting(uglyJsonString);
System.out.println(formattedJsonString);
}
결과이다.
1
2
3
4
5
6
7
8
{
"one" : "AAA",
"two" : [ "BBB", "CCC" ],
"three" : {
"four" : "DDD",
"five" : [ "EEE", "FFF" ]
}
}
2. Gson을 사용하여 JSON Pretty Print
Gson Maven 종속성을 추가한다.
1
2
3
4
5
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
JSON을 예쁘게 인쇄하려면 GsonBuilder
의 setPrettyPrinting()
메서드를 사용한다.
1
2
3
4
5
6
public String prettyPrintUsingGson(String uglyJson) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement jsonElement = JsonParser.parseString(uglyJsonString);
String prettyJsonString = gson.toJson(jsonElement);
return prettyJsonString;
}
결과는 올바른 형식의 JSON 객체이다.
1
2
3
4
5
6
@Test
public void shouldPrettyPrintJsonStringUsingGson() {
JsonPrettyPrinter jsonPrettyPrinter = new JsonPrettyPrinter();
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGson(uglyJsonString);
System.out.println(formattedJsonString);
}
결과이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"one": "AAA",
"two": [
"BBB",
"CCC"
],
"three": {
"four": "DDD",
"five": [
"EEE",
"FFF"
]
}
}
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.