2013-04-11 1 views
0

웹 서비스에서 돌아 오는 일정하지 않은 데이터에 문제가 있습니다. 객체가 없으면 응답에서 부울을 다시 가져올 수 있습니다.잭슨과 일치하지 않는 데이터로 마샬링

해피 경로 :

{ 
    "foo": {"msg": bar} 
} 

실망 경로 : 값 부울이 반환 될 때

{ 
    "foo": false 
} 

, 내가 널 푸 개체로 저장을하고 싶지만 지금까지 내가 발견하지 않았습니다 이 문제를 해결하기 위해 잭슨에서 좋은 방법입니다.

대부분 내가 지금까지 한 것은 @JsonProperty 주석을 사용하여 내 객체를 json 응답에 매핑하는 것입니다.

//... Omitted code 
@JsonProperty("foo") 
public void setBar(Bar bar) { 
    this.bar = bar 
} 


class Bar { 
    String msg; 
    // ... Getter and setter below ... 
} 

답변

1

해결책을 찾았습니다. 매우 우아하지는 않지만 주요 코드 재 작성이 필요하지 않습니다. 내 foo 속성 setter에서 JsonNode 객체를 사용할 수있었습니다. 그래도 내가 더 좋은 것을 생각해 낼 수 있는지 알게 될 것입니다.

@JsonProperty("foo") 
public void setBar(JsonNode barJsonNode) { 
    if(barJsonNode.isBoolean()){ 
     bar = null; 
    } else { 
     // Magic goes here 
    } 

}