본문 바로가기

Programming/JAVA

jackson : jackson json parser 쓸 때 field ordering

자바에서는 json parser 로 jackson 을 많이 쓰네요. (라기 보단 이젠 논란없이 그냥 이것만 쓰는듯.)


제목처럼 jackson 은 Object (pure bean) 를 json 형태의 pretty text 로 serialize 할 때 자주 씁니다.

물론 json type으로 pretty text를 Object 로 deserialize 할 때도 당연히 쓰겠죠.


Object 를 serialize 할 때 종종 의도하지 않게

결과 text 가 나오는 경우가 있습니다.


예를 들어

class User {
   private String name;
   private String email;
   private int age;
   private String homepage;
   private List<education> education;
   private List<string> hobby;
   getter...
}

위 User 라는 클래스를 객체로 생성한 후에 jackson 을 이용하여 serialize 할 경우에

위에 작성된 field 순서대로 되지 않을 수 있습니다.

일반적으로 꼬입니다.


그래서 만약 field 순대로 serialize 할 때 순서를 주고 싶거나,

field 를 원하는 순서대로 serialize 하고 싶다면.


jackson 의 JsonPropertyOrder annotation 을 사용해야합니다.

예를 들어 위 class 의 순서를 field 순서대로 하고 싶다면

@JsonPropertyOrder({"name", "email", "age", "homepage", "education", "hobby"})

위 와 같은 annotation 을 serialize 할 class 명 위에 작성해주어야 합니다.


덧) 참고로, User 의 field 중 참조하는 type 이 String 이나 primitive 가 아니라고 마찬가지 pure bean 이라면 참조되는 bean 의 각 field 도 위와 같이 동일하게 해줄 수 있습니다.


출처 : http://jackson.codehaus.org/1.7.3/javadoc/org/codehaus/jackson/annotate/JsonPropertyOrder.html