Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 javax.json API로 JSON 예쁘게 출력하기

javax.json 패키지는 JSON을 처리하기 위한 Object Model API(객체 모델 API)를 제공합니다. Object Model API는 JSON 객체 및 배열 구조에 대해 불변(immutable) 객체 모델을 제공하는 고수준 API입니다. 이러한 JSON 구조는 JsonObjectJsonArray 인터페이스를 사용하여 객체 모델로 표현할 수 있습니다.

또한 JsonGenerator 인터페이스를 활용하면 스트리밍 방식으로 출력 대상에 JSON 데이터를 작성할 수 있습니다. 특히 JsonGenerator.PRETTY_PRINTING은 JSON을 보기 좋게 정렬된 형태(예쁘게 인쇄)로 생성하기 위한 설정 속성입니다.

아래 예제를 통해 JSON을 예쁘게 출력하는 방법을 살펴보겠습니다.

예제 코드

import java.io.*;
import java.util.*;
import javax.json.*;
import javax.json.stream.*;

public class JSONPrettyPrintTest {
    public static void main(String args[]) {
        String jsonString = "{\"name\":\"Raja Ramesh\",\"age\":\"35\",\"salary\":\"40000\"}";
        StringWriter sw = new StringWriter();
        try {
            JsonReader jsonReader = Json.createReader(new StringReader(jsonString));
            JsonObject jsonObj = jsonReader.readObject();
            Map<String, Object> map = new HashMap<>();
            map.put(JsonGenerator.PRETTY_PRINTING, true);
            JsonWriterFactory writerFactory = Json.createWriterFactory(map);
            JsonWriter jsonWriter = writerFactory.createWriter(sw);
            jsonWriter.writeObject(jsonObj);
            jsonWriter.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
        String prettyPrint = sw.toString();
        System.out.println(prettyPrint); // 예쁘게 출력된 JSON
    }
}

실행 결과

{
    "name": "Raja Ramesh",
    "age": "35",
    "salary": "40000"
}

위 코드의 핵심 흐름은 다음과 같습니다. 먼저 Json.createReader()로 문자열 형태의 JSON을 읽어 JsonObject로 변환합니다. 그다음 PRETTY_PRINTING 속성을 true로 설정한 맵을 Json.createWriterFactory()에 전달하여 JSON 작성기 팩토리를 생성합니다. 이렇게 만든 JsonWriter로 객체를 출력하면 들여쓰기가 적용된 가독성 높은 JSON 문자열을 얻을 수 있습니다.