Json串和实体类不一致问题

一、fastjson:

当字段少于实体类字段:正常通过,没有的字段会被赋予默认值

当字段多于实体类字段:正常通过,没有的字段不会被反序列化到对象中

二、jackson:

段少于实体类字段:正常通过,没有的字段会被赋予默认值

当字段多于实体类字段   此时会报错,这个错翻译过来就是,一个无法识别的field。

由此可见,在默认情况下,jackson是不支持json串的字段多于实体类字段的,但是,jackson也提供了解决方案,我们在实体类上,添加注解@JsonIgnoreProperties,

这个注解有一个ignoreUnknown属性,默认值为false,我们可以将它改为true,这样jackson在反序列化的时候,就会忽略掉不存在的属性了。(@JsonIgnoreProperties(ignoreUnknown = true))

 

三、项目开发过程中,有时候可能要对接第三方平台,可能就会存在字段名不一样的问题,而双方的字段名不一致, 而代码开发已经有一段时间勒,如果就因为字段名不一样的问题,双方改成属性名一致,这样改动量太大,也不保险,下面我来接手一下,针对这种场景,如果解决。

假设: 系统通过http对接,传的是json。有一个参数"名称"

第三方平台:name

开发环境:userName

直接通过实体类映射,不用说肯定有问题

解决办法:

@JsonProperty("name")
private String userName;

 

Json串和实体类不一致问题

上一篇:前端-HTML


下一篇:使用 Apache Superset 可视化 ClickHouse 数据