본문 바로가기

jackson6

Jackson @JsonView 사용기 Jackson 을 이용하여 Json 문자열을 쓸 때, 모든 속성을 다 노출하고 싶지 않은 경우가 있다. 이럴 때 @JsonView 를 사용할 수 있다. 예제 코드를 살펴보자. @Data @Builder public class Album { private String albumId; private String albumName; private Singer representSinger; private List tracks; } @Data @Builder public class Singer { private String name; private String nickname; private String managementCompany; } @Data @Builder public class Track { priv.. 2017. 9. 27.
Jackson을 이용한 org.joda.time.DateTime 파싱하기 개발을 진행하다가 문득 "Jackson으로 JSON을 읽거나 쓸 때, DateTime 형은 어떤 포멧을 가질까? 그리고 이를 원하는 포멧으로 지정할 수 있을까?” 라는 의문이 생겼다. 그냥 무작정 해보자. DateTime 형 속성을 하나 갖고 있는 모델이 있다고 가정하자. @Data @AllArgsConstructor public class DateTimeModel { DateTime ymdt; } public class TempTest { private ObjectMapper objectMapper = new ObjectMapper(); @Test public void deserialize() throws Exception { DateTimeModel model = new DateTimeModel(ne.. 2017. 7. 27.
Jackson을 이용하여 JSON -> POJO 변환시 POJO에 존재하지 않는 property가 있는 경우 예를 들어보자 { “no”: 1234, “id”: “test”, “name”: “John”, “age”: 20 } @Data public class Member { private int no; private String id; private String name; //private int age; } 위 처럼 되어 있는 경우 Member 객체로 변환할 때 오류가 발생할 것이다. age 라는 속성을 알 수 없기 때문이다. 이를 해결하는 방법은 2가지가 있다.(아마 그 외에도 있으리라 생각되지만 잘 모르겠다.) 1. POJO 클래스에 @JsonIgnoreProperty(ignoreUnknown = true) 를 붙여주는 방법 @JsonIgnoreProperty(ignoreUnknown = true) @Dat.. 2017. 7. 21.
Spring에서 Json을 파라메터로 넘겼을 때 어떻게 객체로 받을 수 있을까? 먼저 "Spring에서 Request 또는 Response로 전달되는 파라메터 정보를 Controller에서 어떻게 Java 객체로 받을 수 있을까”라는 의문이 먼저 들었다. 예를 들면 http://test.domain.com/test?no=1234&id=testId 라는 url이 있다고 가정하자. @RequestMapping(value=“test”, method = RequestMethod.GET) public void test(@RequestParam(“id”) String id, @RequestParam(“no”) int no) { // 구현로직 } 아마 Controller의 메소드는 위 처럼 구현되어 있을 것이다. 여기서 id와 no는 어떻게 각각 String과 int 형으로 변환이 되는 것일까?.. 2017. 7. 21.