PHpullh
학습 라이브러리/Java/Jackson ObjectMapper

JAVA · 파일/IO

Jackson ObjectMapper

Jackson 라이브러리로 JSON 직렬화/역직렬화를 수행합니다.

파일/IO중급JacksonObjectMapperJSON직렬화

핵심 설명

Jackson 라이브러리로 JSON 직렬화/역직렬화를 수행합니다.

Java code

// Jackson 의존성: com.fasterxml.jackson.core:jackson-databind:2.16+

// import com.fasterxml.jackson.databind.ObjectMapper;
// import com.fasterxml.jackson.databind.SerializationFeature;

// Jackson 사용법 (의사코드 — 실행 시 Jackson 의존성 필요)
class JacksonDemo {
    record Product(String name, int price, boolean available) {}

    public static void main(String[] args) throws Exception {
        // ObjectMapper 생성 (재사용 권장)
        // ObjectMapper mapper = new ObjectMapper()
        //     .enable(SerializationFeature.INDENT_OUTPUT);

        // 직렬화: 객체 -> JSON
        // Product product = new Product("노트북", 1500000, true);
        // String json = mapper.writeValueAsString(product);
        // {"name":"노트북","price":1500000,"available":true}

        // 역직렬화: JSON -> 객체
        // Product restored = mapper.readValue(json, Product.class);

        // 리스트 역직렬화
        // String jsonArray = "[{...}, {...}]";
        // List<Product> list = mapper.readValue(jsonArray,
        //     new TypeReference<List<Product>>() {});

        // 파일에서 읽기
        // Product fromFile = mapper.readValue(new File("p.json"), Product.class);

        // record는 Jackson 2.12+에서 지원
        System.out.println("Jackson은 Java JSON 처리의 표준입니다.");
        System.out.println("record, sealed, Optional 등 최신 기능을 지원합니다.");
    }
}

학습 팁

ObjectMapper는 스레드 안전하므로 싱글턴으로 재사용하세요. 매번 생성하면 성능이 떨어집니다.

주의할 점

제네릭 타입(List<Product>)을 역직렬화할 때 TypeReference를 사용하지 않으면 LinkedHashMap으로 역직렬화됩니다.

자주 묻는 질문

Jackson ObjectMapper란 무엇인가요?

Jackson 라이브러리로 JSON 직렬화/역직렬화를 수행합니다.

Jackson ObjectMapper 학습 시 주의할 점은 무엇인가요?

제네릭 타입( List&lt;Product&gt; )을 역직렬화할 때 TypeReference 를 사용하지 않으면 LinkedHashMap 으로 역직렬화됩니다.