Java Jackson - prevent float to int conversion when deserializing

前端 未结 3 909
孤独总比滥情好
孤独总比滥情好 2020-12-16 18:27

I have a JSON payload with the following structure ...

{
\"age\": 12
}

... which is mapped to the following class:

public c         


        
3条回答
  •  渐次进展
    2020-12-16 18:33

    A floating-point value will be truncated to an integer value by default from Jackson 2.6. As indicated in a previous answer, setting ACCEPT_FLOAT_AS_INT to false should fix your problem.

    @Test(expected = JsonMappingException.class)
    public void shouldFailMarshalling() throws IOException {
        final String student = "{\"age\": 12.5}";
        final ObjectMapper mapper = new ObjectMapper();
    
        // don't accept float as integer
        mapper.configure(ACCEPT_FLOAT_AS_INT, false);
        mapper.readValue(student, Student.class);
    }
    

提交回复
热议问题