当前位置: 首页 > 知识库问答 >
问题:

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

曹建明
2023-03-14

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

我目前正在为该项目的一个新功能,并希望使用改型与Gson库作为其JSON解析器,因为这两个库提供了更多的灵活性和更干净的代码,如果与我们以前的库选择相比。

问题是,我将需要一些遗留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个答案

孙思源
2023-03-14

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

有行为的是处理注释的相应组件。例如,Jackson的ObjectMapper(其内部)读取您提供的类型,内省它以查找任何有意义的注释,并使用它们序列化/反序列化。@serializedname对Jackson没有意义,所以它会忽略它。类似地,@jsonproperty对Gson没有意义,所以它会忽略它。

不会有任何问题*。

 类似资料:
  • 我正在尝试设置一个Spark流代码,该代码从Kafka服务器读取行,但使用另一个本地文件中编写的规则来处理它。我正在为流式数据创建StreingContext,并为其他应用所有其他火花功能的人创建sparkContext——例如字符串操作、读取本地文件等 但这会引发以下错误

  • 我有一个带有postgresql数据库Hibernate注释的JAVA POJO类。 现在,我需要在应用程序中支持多个数据库。我的问题是:我们应该在其他数据库(Oracle、MySQL、SQL Server)中使用同一个类,还是应该为每个不同的数据库编写单独的注释类? 原因:为了支持特殊字符,我们使用数据库专有类型,而不是像这样的hibernate类型

  • 如果不是这样,请给我一个简单的例子。

  • 我有一个带有Jackson注释的POJO 因此,当Jackson库被其他框架(如RestEasy)用于自动编组时,这些注释有助于指导序列化和反序列化过程。

  • null 最终产品应该如下所示: 在上面的例子中,@public instance将只有uniqueKey、gtin、printedGtin作为属性。

  • 问题内容: 我可以在JSON文件中使用注释吗?如果是这样,怎么办? 问题答案: 没有。 JSON应该都是数据,如果包含注释,那么它也将是数据。 您可能有一个称为(或其他名称)的指定数据元素,使用JSON数据的应用程序会忽略该数据元素。 在生成/接收JSON的过程中添加注释可能会更好,因为它们应该事先知道什么是JSON数据,或者至少知道其结构。 但是,如果您决定: