Что такое альтернативное из DeserializationFeature.ACCEPT_FLOAT_AS_INT в -Джексоне DataBind2.5, поскольку такой конфигурации десериализации НЕ доступен в 2.5 (доступен с его 2.6)Джексона-DataBind 2.5 преобразования поплавок Int
Наше приложение использует jackson-databind 2.5, в котором мы заметили, что float преобразуется в int.
Мы, однако, должны отключить конверсии значений, принуждение. Но, как мы используем Джексон 2.5, есть NODeserializationFeature.ACCEPT_FLOAT_AS_INT
Как отключить этот поплавок для преобразования Int в 2,5? Мы ожидаем, что пользователь должен получить исключение проверки данных, если он предоставляет float, а не int, в «age».
Ниже приведен образец 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;
}
}
Это тестовый код (с использованием джексон-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 "," age ": 2}
Возможный дубликат [Java Jackson - предотвращение преобразования float в int при десериализации] (http://stackoverflow.com/questions/25076030/java-jackson-pre vent-float-to-int-conversion-when-deserializing) –