阻止Jackson中的自动String to Integer转换
我有一个简单的POJO:
public class ADate { private Integer day; private Integer month; private Integer year; ... // getters/setters/constructor }
以下JSON文档正确反序列化为ADate
:
{ "day":"10", "month":"2", "year":"1972" }
Jackson自动将String转换为Integer。
有没有办法避免这种自动转换,如果将Integer值定义为String,则让Jackson失败。
我在Jackson github 问题上找到了一些有趣的代码。 改变了一点,这就是我得到的:
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(); } }