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

2018-03-05  本文已影响500人  maxbin

问题描述

在使用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

<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>           
上一篇 下一篇

猜你喜欢

热点阅读