美文网首页
dubbo rest 添加@JsonIgnore 无效的问题,替

dubbo rest 添加@JsonIgnore 无效的问题,替

作者: maxbin | 来源:发表于2018-03-05 14:48 被阅读500次

问题描述

在使用dubbo中间件进行微服务开发的时候,使用了rest+json的方式(当当网的dubbox),当对象序列化和反序列化的时候,如果序列化的对象中拥有的属性在反序列化的对象中不存在,会报错,无法调用,在对象上加@JsonIgnoreProperties注解也不起作用的

问题发生的原因

  1. dubbo默认使用的json版本是fastjson 1.9的,在新版本的fastjson(2.+以后)中,两个版本的jar包的包名已经变更了,如果是加上注解忽略序列化中不存在的属性可以将1.9和2.0以后的两个注解都加上,暂时性的解决了问题
  2. 很多子项目已经使用了新的fastjson版本,在加两个版本注解的解决方案下一是代码不优雅,二容易让人迷惑;因此我们就将dubbo中的fastjson版本替换到2.+以上的

解决方案

用高版本的fastjson替换项目中的低版本json

  • 修改pom.xml文件,将2.+版本的json依赖导入进来
<jackson.version>2.9.0</jackson.version>

<!-- jackson -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>${jackson.version}</version>
</dependency>           
  • 并排除掉1.9版本的fastjson依赖
  • dubbo服务的提供者和消费者都要做修改
  • 在dto上加@JsonIgnoreProperties注解,注意统一使用2.+以上版本,并搜索是否还有1.9版本的依赖

相关文章

网友评论

      本文标题:dubbo rest 添加@JsonIgnore 无效的问题,替

      本文链接:https://www.haomeiwen.com/subject/folhfftx.html