사용자 도구

사이트 도구


java:jackson

Java Jackson JSON Library

@JsonView

@JsonCreator

  • 해당 클래스 JSON 문자열을 받아서 객체를 생성할 때 변환기를 직접 만들고자 할 때 구현한다.

Performance

Config 설정

ObjectMapper objectMapper = new ObjectMapper();
 
// 모르는 property에 대해 무시하고 넘어간다. DTO의 하위 호환성 보장에 필요하다.
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
// ENUM 값이 존재하지 않으면 null로 설정한다. Enum 항목이 추가되어도 무시하고 넘어가게 할 때 필요하다.
objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);

Java 8 설정

ObjectMapper mapper = new ObjectMapper()
   .registerModule(new ParameterNamesModule())
   .registerModule(new Jdk8Module())
   .registerModule(new JavaTimeModule());

Bidirectional Relation 양방향 관계

Pretty Print

// 전역설정
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
 
// Writer 당 설정
new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
.writeValueAsString(객체);

setDateFormat 주의

  • Jackson 2 ObjectMapper.setDateFormat() 으로 SimpleDateFormat을 지정할 수 있는데 이 경우 SimpleDateFormat은 Thread Safe 하지 못해서 Jackson 이 매번 clone을 해서 재생성해서 날짜를 포맷팅한다.
  • 성능 저하 요소가 될 수 있으므로 Java 8 이상에서는 가급적이면 LocalDateTime 등을 사용하는게 좋겠다.

참고

java/jackson.txt · 마지막으로 수정됨: 2018/08/09 12:16 저자 kwon37xi