Gson和Jackson注释可以在同一个POJO中共存吗?

时间:2015-10-05 21:52:21

标签: java android json jackson gson

我正在开发一个遗留的Android项目,该项目使用一个非常旧版本的Jackson lib来解析从我们的Web API带来的JSON。

我目前正在为该项目开发一个新功能,并希望将Retrofit与Gson lib一起用作其JSON解析器,因为与我们之前的lib选项相比,这两个lib提供了更多的灵活性和更清晰的代码。

问题是,我需要一些遗留的POJO,以及那些已经有杰克逊注释的POJO。将Gson和Jackson注释放在同一个类中会产生任何冲突吗?或者我是否会被迫使用Gson注释创建镜像类以避免潜在的问题?

示例:

import org.codehaus.jackson.annotate.JsonProperty;
import com.google.gson.annotations.SerializedName;

public class someClass {

    @JsonProperty ("some_attribute") // Jackson annotation
    @SerializedName("some_attribute") // Gson annotation
    private String someAttribute;

}

1 个答案:

答案 0 :(得分:9)

注释只是元数据。他们自己没有任何行为。

具有行为的是处理注释的相应组件。例如,杰克逊的ObjectMapper(其内部)读取您提供的类型,反过来查找任何有意义的注释,并使用它们来序列化/反序列化。 @SerializedName对杰克逊没有意义,所以它忽略了它。同样地,@JsonProperty对Gson没有意义,所以它忽略了它。

不会有任何问题*。

*除非您编写自己的类型适配器,无论出于何种原因使用其他库的注释。