🧩 ObjectMapper란? - 자바에서 JSON을 다루는 가장 강력한 도구

웹 개발에서 JSON은 가장 많이 사용되는 데이터 포맷입니다.

특히 Spring Boot를 사용하면 REST API에서 JSON은 기본값이죠.

이때 자바 객체 ↔ JSON 간 변환을 손쉽게 도와주는 것이 바로 Jackson의 ObjectMapper입니다.


1️⃣ ObjectMapper란?

ObjectMapper는 Jackson 라이브러리에서 제공하는 클래스이며, 자바 객체를 JSON으로 직렬화하거나(JSON 생성), JSON 문자열을 자바 객체로 역직렬화할 때(JSON 파싱) 사용됩니다.

com.fasterxml.jackson.databind.ObjectMapper

2️⃣ 주요 기능

기능 설명
직렬화 (Serialization) 자바 객체 → JSON 문자열
역직렬화 (Deserialization) JSON 문자열 → 자바 객체
읽기/쓰기 지원 파일, InputStream, 문자열, 바이트 등 다양한 입력/출력 지원
유연한 설정 가능 필드 명명 전략, Null 처리, 날짜 포맷 등 커스터마이징 가능

3️⃣ 사용 예제

✅ JSON → 자바 객체 (Deserialization)

String json = "{\"name\":\"철준\",\"age\":35}";

ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(json, Person.class);

System.out.println(person.getName()); // 철준
public class Person {
    private String name;
    private int age;
    
    // 기본 생성자 & getter/setter 필요!
}

✅ 자바 객체 → JSON (Serialization)

Person person = new Person();
person.setName("철준");
person.setAge(35);

ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(person);

System.out.println(json); 
// 결과: {"name":"철준","age":35}

4️⃣ 자주 쓰는 메서드 정리

메서드 설명
writeValueAsString(Object obj) 객체 → JSON 문자열
writeValue(File/file/OutputStream, Object obj) 객체를 파일 또는 스트림에 JSON으로 저장
readValue(String json, Class<T> clazz) JSON 문자열 → 객체
readTree(String json) JSON 문자열을 트리 구조(JsonNode)로 파싱
convertValue(Object fromValue, Class<T> toValueType) 객체 간 타입 변환 (ex. DTO ↔ Map)

5️⃣ JSON 트리 다루기 (JsonNode)

단순한 매핑이 아니라, 노드 단위로 JSON을 탐색하고 싶을 때는 readTree()를 사용합니다.

String json = "{\"user\":{\"name\":\"철준\",\"age\":35}}";
JsonNode root = objectMapper.readTree(json);
String name = root.path("user").path("name").asText();

System.out.println(name); // 철준

6️⃣ 주의할 점

  • 객체를 JSON으로 변환하려면 기본 생성자와 getter/setter가 반드시 필요합니다.
  • 필드명이 JSON 키와 다를 경우 @JsonProperty("jsonKey")를 이용해야 합니다.
  • 날짜, null 처리 등은 기본 설정이 예상과 다를 수 있으므로 커스터마이징이 필요할 수 있습니다.
@JsonProperty("user_name")
private String userName;

7️⃣ Spring Boot에서 자동으로 쓰이는 이유

Spring Boot는 내부적으로 Jackson의 ObjectMapper를 기본 메시지 컨버터로 사용합니다.
즉, @RestController에서 return 객체를 하면 자동으로 JSON으로 변환해주는 이유도 이 때문입니다.

@GetMapping("/user")
public Person user() {
    return new Person("철준", 35); // 자동으로 JSON 변환됨
}

✅ 마무리

ObjectMapper는 JSON을 다룰 때 없어서는 안 될 핵심 도구입니다.
직렬화/역직렬화는 물론이고, 유연한 커스터마이징, 트리 탐색, 타입 변환 등 다양한 기능을 제공합니다.
특히 Spring Boot에서는 기본값으로 쓰이기 때문에, 잘 익혀두면 JSON 처리에서 자유로워질 수 있습니다.


 

참조

+ Recent posts