Jackson 默认支持 number,boolean 转换成 string。

public class JacksonDemo {
    @SneakyThrows
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        String str = "{\"age\":18,\"max\":true}";
        final Model1 model1 = mapper.readValue(str, Model1.class);
        System.out.println(model1);
        // Model1(age=18, max=true)
    }
}

@Data
@ToString
class Model1 {
    String age;
    String max;
}

默认配置下, 即使输入的数据类型不符合要求, 也是可以正常反序列化的。

大多出场景下, 这个配置不会有什么问题, 但是碰到是非常严格的场景,笔记对数字精度有要求的场景, 可能会出问题,jackson 提供了关闭开关。

  1. github: Disable Integer to String coercion