Java Jackson - prevent float to int conversion when deserializing

前端 未结 3 905
孤独总比滥情好
孤独总比滥情好 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:40

    The setter method will be called when converting json string into java object using ObjectMapper's readValue() method where you can check for value. Look at the setter method's signature that accepts String instead of Integer.

    sample code:

    class Student {
    
        private int age;    
        public int getAge() {
            return age;
        }
    
        public void setAge(String ageString) {
            System.out.println("called");
            try {
                age = Integer.parseInt(ageString);
            } catch (NumberFormatException e) {
               throw new IllegalArgumentException("age can't be in float");
            }
        }
    }
    
    ...
    
    try {
        Student student = new ObjectMapper().readValue("{\"age\": 12.5}", Student.class);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
    

提交回复
热议问题