Prevent automatic String to Integer conversion in Jackson

前端 未结 2 980
慢半拍i
慢半拍i 2021-01-05 00:54

I have a simple POJO:

public class ADate {
    private Integer day;
    private Integer month;
    private Integer year;
    ... // getters/setters/construct         


        
2条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-05 01:17

    I've found the some interesting code on Jackson github issues. Changed it a little and that's what I got:

    public class ForceIntegerDeserializer extends JsonDeserializer {
    
        @Override
        public int deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
            if (jsonParser.getCurrentToken() != JsonToken.VALUE_NUMBER_INT) {
                throw deserializationContext.wrongTokenException(jsonParser, JsonToken.VALUE_STRING, "Attempted to parse String to int but this is forbidden");
            }
            return jsonParser.getValueAsInt();
        }
    }
    

提交回复
热议问题