jackson 라이브러리 deserialize 오류
jackson 라이브러리 deserialize 오류
- Class com.fasterxml.jackson.databind.deser.std.NumberDeserializers$BooleanDeserializer has no default (no arg) constructor
: XML 데이터중에서 boolean 데이터 형태가 boolean 형태가 아닐 경우에 발생. XML 문자열을 다음 Test 클래스로 deserialize 할때, B 요소(element) 가 true/false 형태이어야하는데, 0 또는 1일 경우가 있다. 이럴 경우에는 따로 BooleanDeserializer 를 작성하고, 해당 클래스의 필드에 annotatin 을 표시해야한다.
class Test {
public int A;
public boolean B;
}
- 추가
public class CustomBooleanDeserializer extends JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
int value = jsonParser.getValueAsInt();
// System.out.println("value:" + value);
return (value == 1 ? true : false);
}
}
- 변경
class Test {
@JacksonXmlProperty
public int A;
@JsonDeserialize(using = CustomBooleanDeserializer.class)
public boolean B;
}