문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:jackson [2020/07/22 16:33] kwon37xi [Java 8 설정] |
java:jackson [2020/11/23 14:48] kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java Jackson JSON Library ====== | ====== Java Jackson JSON Library ====== | ||
* [[java: | * [[java: | ||
+ | * [[java: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
줄 19: | 줄 20: | ||
* Spring 4.1 부터 '' | * Spring 4.1 부터 '' | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
===== @JsonCreator ===== | ===== @JsonCreator ===== | ||
* 해당 클래스 JSON 문자열을 받아서 객체를 생성할 때 변환기를 직접 만들고자 할 때 구현한다. | * 해당 클래스 JSON 문자열을 받아서 객체를 생성할 때 변환기를 직접 만들고자 할 때 구현한다. | ||
줄 57: | 줄 58: | ||
ObjectMapper objectMapper = new ObjectMapper(); | ObjectMapper objectMapper = new ObjectMapper(); | ||
- | // 모르는 property에 대해 무시하고 넘어간다. DTO의 하위 호환성 보장에 필요하다. | + | objectMapper |
- | objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, | + | |
+ | .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, | ||
- | // ENUM 값이 존재하지 않으면 null로 설정한다. Enum 항목이 추가되어도 무시하고 넘어가게 할 때 필요하다. | + | |
- | objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, | + | .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, |
+ | // 시간을 timestamp 숫자가 아닌, 문자열로 포맷팅한다. 기본 ISO 포맷 | ||
+ | .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, | ||
</ | </ | ||
줄 129: | 줄 133: | ||
+ | ===== @JsonInclude ===== | ||
+ | * [[https:// | ||
+ | * '' | ||
+ | * [[https:// | ||
===== JsonNodeFactory ===== | ===== JsonNodeFactory ===== | ||
* [[https:// | * [[https:// | ||
줄 167: | 줄 175: | ||
| | ||
- | // with 3.0 (or with 2.10 as alternative) | ||
- | ObjectMapper mapper = JsonMapper.builder() // or different mapper for other format | ||
- | | ||
- | | ||
- | | ||
- | // and possibly other configuration, | ||
- | | ||
</ | </ | ||
+ | * '' | ||
+ | |||
+ | ===== Jackson 2.10 부터 ObjectMapper 생성 방식 변경됨 ===== | ||
+ | <code java> | ||
+ | JsonMapper objectMapper = JsonMapper.builder() | ||
+ | .addModules(new ParameterNamesModule(), | ||
+ | // 모르는 property 를 역직렬화 할 때 오류없이 무시하게 한다. | ||
+ | .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, | ||
+ | // 모르는 ENUM 값을 역직렬화 할 때 null로 취급하게 한다. | ||
+ | .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, | ||
+ | // 시간 관련 객체(LocalDateTime, | ||
+ | .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, | ||
+ | // 숫자를 문자로 직렬화하기, | ||
+ | .enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS) | ||
+ | .defaultTimeZone(TimeZone.getDefault()) | ||
+ | .defaultLocale(Locale.getDefault()) | ||
+ | .build(); | ||
+ | </ | ||
+ | |||
===== 참고 ===== | ===== 참고 ===== | ||
* [[http:// | * [[http:// | ||
줄 191: | 줄 211: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// |