본문 바로가기

TroubleShooting/Java

jackson 라이브러리 deserialize 오류

728x90

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;

}