dubbo rest 添加@JsonIgnore 无效的问题,替换json版本为2.9.0

问题描述

在使用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版本的依赖
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,014评论 19 139
  • 感赏自己没有因为和婆婆之间发生矛盾而一直沉浸在委屈与自责中 感赏自己的改变 遇到问题能及时的让自己调整过来 感赏...
    幸福魔法师阅读 71评论 0 0
  • 每个人心里都有一座小城,那里或许没有大城市的高楼大厦,那里或许没有大城市的熙熙攘攘,但那里有着我们最爱的朋友、家人...
    汪逸飞阅读 1,016评论 0 1
  • “给我来口酒。” 于热闹的集市中,一个颠和尚忽然跑到一家酒馆里,找客人讨酒喝。 可人听罢都笑了,跟着笑骂道,“你个...
    达哥唠嗑小屋阅读 730评论 4 8
  • 1 《哈克贝利费恩历险记》是讲的在这之后的故事。哈克在这本书的开头终于还是把他的巨额财产送出去了,他送给了一位德高...
    邂逅哆啦A梦阅读 3,092评论 0 0