jackson-databind 2.5中 DeserializationFeature.ACCEPT_FLOAT_AS_INT 的替代品是什么,因为此反序列化配置在2.5中不可用(自2.6起可用)
我们的应用程序正在使用 jackson-databind 2.5,其中我们注意到 float 正在转换为 int。
我们虽然需要禁用值转换,强制。但是当我们使用杰克逊 2.5 时,没有DeserializationFeature.ACCEPT_FLOAT_AS_INT
如何在 2.5 中禁用此 float 到 int 的转换?如果用户在“age”中提供 float 而不是 int,我们希望用户应该得到数据验证异常。
以下是示例 POJO
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这是测试代码(使用 jackson-databind 2.5):
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TestConvert {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
String json = "{\"name\" : \"foobar\", \"age\" : 2.99}";
//JSON from file to Object
User user = mapper.readValue(json, User.class);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(user);
System.out.println(jsonInString);
}
}
上述测试代码的输出为:
{“名称”:“foobar”,“年龄”:2}