2011-09-25 3 views
1

this twitter API users/show response과 같은 JSON 구문 분석을 위해 Jackson과 Gson Java 라이브러리를이 작업을 수행하는 데 사용했습니다. JSON 속성의 작은 하위 집합에만 관심이 있습니다 .Gson은 매우 간결한 구문 때문에 좋았지 만 Gson을 계속 사용하기 위해 내부적 인 노력을 잃었습니다. Jackson은 이미 응용 프로그램의 다른 곳에서 이미 사용되고 있으므로 문서화되어 있습니다. 더 나은 성능 (나는 양손이 Gson을 잃을 좋은 이유이다).단순한 비 직렬화를위한 Jackson 대 Gson

public class TwitterUser { 
private String id_str; 
private String screen_name; 

public String getId_str() { 
    return id_str; 
} 

public void setId_str(String id_str) { 
    this.id_str = id_str; 
} 

public String getScreen_name() { 
    return screen_name; 
} 

public void setScreen_name(String screen_name) { 
    this.screen_name = screen_name; 
} 
} 

GSON의 코드 만이 하나 개의 라인 구축하는 데 필요한 같은 POJO를 들어

,

나에게 꽤 좋다
TwitterUser user = new Gson().fromJson(jsonStr, TwitterUser.class); 

; 가늠자는 잘하고 당신이 원하는 재산을 선택하십시오. 반면 Jackson은 선택한 필드에서 POJO를 작성하는 데 약간 힘들다.

Map<String,Object> userData = new ObjectMapper().readValue(jsonStr, Map.class); 
//then build TwitterUser manually 

또는 긴 호흡 설명 후

TwitterUser user = new ObjectMapper().readValue(jsonStr, TwitterUser.class); 
//each unused property must be marked as ignorable. Yikes! For 30 odd ignored fields thats too much configuration. 

그래서

, 위의 증명보다 내가 더 적은 코드로 잭슨을 사용할 수있는 방법은 무엇입니까?

+0

하나 추가 참고 : 당신은 확실히 새로운 ObjectMapper 매번 생성하지 않으 - 중 싱글 톤을 사용하거나 Guice는 인스턴스를 주입 할 수 있습니다. 다행스럽게도 주요 쟁점이 아래에 답변되었습니다! – StaxMan

+0

@StaxMan 그래, 코드 샘플의 완성을 위해서였습니다. – markdsievers

답변

4

Jackson 1.4+를 사용하면 클래스 수준 @JsonIgnoreProperties 주석을 사용하여 알 수없는 필드를 자동으로 무시할 수 있습니다 (ignoreUnknown은 true로 설정 됨).

  • http://wiki.fasterxml.com/JacksonHowToIgnoreUnknown
  • +2

    <이마를 내민다>이 매트를 이용해 주셔서 감사합니다. 작별 Gson, 지속되는 동안 재미있었습니다. – markdsievers

    +0

    약간의 구글이 먼 길을 간다':)' –