ObjectMapper는 Jackson 라이브러리에서 제공하는 JSON 처리 유틸리티로, Spring에서 객체(Object)와 JSON 간의 직렬화 및 역직렬화 작업에 널리 사용됩니다.
ObjectMapper는 Java 객체를 JSON으로 직렬화하거나, JSON을 Java 객체로 역직렬화할 수 있게 해주는 Jackson의 핵심 클래스입니다.
ObjectMapper mapper = new ObjectMapper();
// 직렬화
String json = mapper.writeValueAsString(myObject);
// 역직렬화
MyObject obj = mapper.readValue(json, MyObject.class);
writeValueAsString)readValue)readValue(String, Class<T>)readValue(String, new TypeReference<List<T>>(){})User user = new User("John", 30);
String json = mapper.writeValueAsString(user);
String json = "{\"name\":\"John\",\"age\":30}";
User user = mapper.readValue(json, User.class);
Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
@JsonProperty("username")
private String name;
@JsonIgnore
private String password;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
List<User> list = mapper.readValue(json, new TypeReference<List<User>>() {});
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
public class MaskingSerializer extends JsonSerializer<String> {
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString("***");
}
}
@JsonSerialize(using = MaskingSerializer.class)
private String phoneNumber;
| 항목 | 설명 |
|---|---|
| 기본 내장 | Spring Boot는 기본적으로 Jackson(ObjectMapper)을 채택 |
| 통합성 | @RequestBody, @ResponseBody 등과 자동 통합 |
| 성능 | 빠른 JSON 처리 성능 (Gson 대비) |
| 유연성 | 다양한 포맷 지원 (JSON, YAML, XML 등) |
| 설정 용이성 | 전역 커스터마이징 설정이 간단함 |
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper;
}
@RequestBody, @ResponseBodyRestTemplate, WebClientRedisTemplate, KafkaTemplateMockMvc) → JSON 검증 및 비교| Tool | 장점 | 단점 |
|---|---|---|
| Jackson | Spring 기본 내장, 빠름, 커스터마이징 강력 | 복잡한 타입 처리 시 세팅 필요 |
| Gson | 가볍고 사용법 단순 | 성능 낮고 기능 제약 많음 |
| Json-B | Java 표준 기반 | 실무 적용 빈도 낮음 |