Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES

摘要:
因为objectMapper.read是读json的,一个字段一个字段的读,你缺少自然没有问题*/Stringjson1="{"userName":"小李飞刀","age":18}";UserBaseuserBase1=objectMapper.readValue;System.out.println;//{"userName":"小李飞刀","age":18,"addTime":null}/*3.缺少没有问题,但是若是json中有某一个字段,而实体类中没有这个字段,就意味着找不到,他的逻辑是json中读一个字段,然后去实体类中寻找这个字段,若找不到就会抛出异常。}}其实这2种方法都一般,可以看情况使用,尽量不用,没有必要。主要是要看使用场景。

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第1张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第2张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第3张

      1. jsonToBean时,json中有的字段,bean中没有 无法匹配时,忽略此字段,不抛出异常(默认是抛出异常的)
        方案一(局部):在class上加
        @JsonIgnoreProperties(ignoreUnknown = true)
        public classtes

        方案二(局部或全局)或者代码控制
        ObjectMapper objectMapper = newObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.readValue(json,cls);

================================================= 2020-06-11 =====================补充

今日又遇到这个错误,没想到3年前 我就研究过 呵呵 厉害了 我自己!!!!

首先看demo:

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第4张

public classTestMain {
    public static void main(String[] args) throwsJsonProcessingException {

        ObjectMapper objectMapper = newObjectMapper();

        /*1.把一个实体类转换成一个Json 是完全没有问题的,通常不会报错
         */UserBase userBase = newUserBase();
        userBase.setUserName("小李飞刀");
        userBase.setAge(18);
        userBase.setAddTime(newDate());
        String json =objectMapper.writeValueAsString(userBase);
        System.out.println(json);//{"userName":"小李飞刀","age":18,"addTime":1591851786568}



        /*2.若是把一个json转换成实体类,那么这步可能会报错,首先我们测试 json里字段不全缺失的情况
           缺少addTime字段,你可能已经猜到缺少字段不会引起什么问题。因为 objectMapper.read是
           读json的,一个字段一个字段的读,你缺少自然没有问题
         */String json1 = "{"userName":"小李飞刀","age":18}";
        UserBase userBase1 = objectMapper.readValue(json1, UserBase.class);
        System.out.println(objectMapper.writeValueAsString(userBase1));//{"userName":"小李飞刀","age":18,"addTime":null}



        /*3.缺少没有问题,但是若是 json 中有某一个字段,而实体类中没有这个字段,就意味着找不到,他的逻辑是json中读一个字段,然后去
           实体类中寻找这个字段,若找不到就会抛出异常。以下是举例
         */String json2 = "{"userName":"小李飞刀","age88":18}";//把age换成age88
        UserBase userBase2 = objectMapper.readValue(json2, UserBase.class);
        System.out.println(objectMapper.writeValueAsString(userBase2));//这一步就会抛出异常了。
        //2种解决方法 都可以。


    }
}

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第5张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第6张

其实这2种方法 都一般,可以看情况使用,尽量不用,没有必要。主要是要看使用场景。我们用的最多的就是在SpringBoot项目中, HTTP请求 content-type:application/json,时的请求体的Bean类,

因为有些接口的参数,经常发生变化,如增加参数或减少参数,增加参数还好,尤其是减少参数,那么若不忽略掉这个错误,就不行。举例:

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第7张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第8张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第9张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第10张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第11张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第12张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第13张

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES第14张

免责声明:文章转载自《Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos7下安装postgresql13LaTeX小技巧——File ended while scanning use of @writefile错误的下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MyBatis_2

目录 使用接口结合xml文件 数据库表与实体类创建 Users的操作类 Users映射文件 测试 解决字段与属性不匹配(以Order表为例) 数据库表与实体类创建 通过给查询字段起别名,要求别名与属性名一致 使用resultMap标签来定义实体类与字段之间的关系 实现链表查询【根据班级ID查询班级信息(带有老师信息)】 数据库表与实体类...

WINFORM--第三讲(下拉列表)

下拉列表:1.如何把选项放进去。手动放:不常用。使用代码放:(1).使用代码逐项添加a.造一个实体类:重写父类的ToString()方法,返回要显示的属性。b.使用实体造对象c.把对象添加到下拉列表的items集合中去。 案例:把民族表中的数据读取出来加载到下拉列表中去。a.准备实体类、链接类、数据访问类。b.在界面后台代码中,调用数据访问类,获取返回来的...

spring+springmvc+mybatis xml配置文件

一、jdbc.properties 文件: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://192.168.31.xxx:3306/abc?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername=xxxpassword=xxx#定义初...

@RequestBody的使用

基础知识介绍:        @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@Requ...

关于Spring注解开发教程,打包全送你

摘要:spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置。 本文分享自华为云社区《如何高效提升Java开发效率—Spring注解开发全套教程!》,作者: 灰小猿。 一、使用注解标识组件 为了不再在IOC中一个个的声明类对象,首先根据每一个类的功能的不同...

mybatis的知识点总结

1.接口绑定:两种方法,基于注解或者基于xml文档mapper,但要注意mapper的namespace要与接口路径完全一致。 2.orm格式转换:通过设置resultMap和ResultType,将数据库中的记录转换为代码的bean对象。得到list或者对象。 3.通过parameterType接收参数,进行动态sql生成。运用ognl表达式 4.走缓存...