문서의 이전 판입니다!
@Annotation
지옥이 필쳐질 수도 있다.@JsonView
, Spring MappingJacksonViewValue 지원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);
ObjectMapper mapper = new ObjectMapper() .registerModule(new ParameterNamesModule()) .registerModule(new Jdk8Module()) .registerModule(new JavaTimeModule());
// 전역설정 objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // Writer 당 설정 new ObjectMapper() .writer() .withDefaultPrettyPrinter() .writeValueAsString(객체);
ObjectMapper.setDateFormat()
으로 SimpleDateFormat
을 지정할 수 있는데 이 경우 SimpleDateFormat
은 Thread Safe 하지 못해서 Jackson 이 매번 clone을 해서 재생성해서 날짜를 포맷팅한다.LocalDateTime
등을 사용하는게 좋겠다.public class User { public int id; public String name; @JsonBackReference public List<Item> userItems; } public class Item { public int id; public String itemName; @JsonManagedReference public User owner; }
{ "id":2, "itemName":"book", "owner": { "id":1, "name":"John" } }
@JsonFormat (shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss") private Date createdAt;