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;
}
'Engineering > Java' 카테고리의 다른 글
Thymeleaf 에서 자주 사용하는 예제 (3) | 2016.05.18 |
---|---|
이클립스(STS) 에서 프로젝트 폴더 관리 (0) | 2016.03.24 |
java version 변경(update-alternatives) (0) | 2015.12.03 |
com.fasterxml.jackson.databind.ObjectMapper 와 org.codehaus.jackson.map.ObjectMapper 차이점 비교 (0) | 2015.11.18 |
Java's Primitive Data Types (0) | 2014.09.03 |