我正在开发一个遗留的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;
}
答案 0 :(得分:9)
注释只是元数据。他们自己没有任何行为。
具有行为的是处理注释的相应组件。例如,杰克逊的ObjectMapper
(其内部)读取您提供的类型,反过来查找任何有意义的注释,并使用它们来序列化/反序列化。 @SerializedName
对杰克逊没有意义,所以它忽略了它。同样地,@JsonProperty
对Gson没有意义,所以它忽略了它。
不会有任何问题*。
*除非您编写自己的类型适配器,无论出于何种原因使用其他库的注释。