Java 在Jackson中使用@JsonCreator进行反序列化时,是否可以确定要构造的类型?
我希望在使用继承时,可以通过在接口中实现默认构造函数/生成器方法来减少样板代码,如:Java 在Jackson中使用@JsonCreator进行反序列化时,是否可以确定要构造的类型?,java,json,jackson,deserialization,Java,Json,Jackson,Deserialization,我希望在使用继承时,可以通过在接口中实现默认构造函数/生成器方法来减少样板代码,如: public interface IFace { @JsonCreator default <T extends IFace> T buildIFace(@ActualJsonTypeToBeConstructed Class<T> clazz, @JsonProperty String someString) { // calli
public interface IFace {
@JsonCreator
default <T extends IFace> T buildIFace(@ActualJsonTypeToBeConstructed Class<T> clazz,
@JsonProperty String someString) {
// calling some factory that constructs the actual type by string in a very generic manner
return null;
}
}
公共接口IFace{
@JsonCreator
默认的T buildIFace(@ActualJsonTypeToBeConstructed类clazz,
@JsonProperty字符串(someString){
//调用以非常通用的方式通过字符串构造实际类型的工厂
返回null;
}
}
注释@actualjsontypetobeconstucted
只是一个示例。目前,只有当我将相同的代码复制到每个类并获得要在其中构造的实际类型时,这才是可能的,但这正是我想要避免的
那么,有没有办法捕捉到Jackson试图反序列化的实际类型
或者是另一种方式?就像在Gson中一样,我可能能够实现TypeAdapterFactory之类的功能。如果不对其进行编码,很难找到一个单一搜索解决方案。。。您既不能使用协议来确定类型,也不能不使用JacksonMapper,您认为库中的json是运行时内存中的原始json,如“org.json”?请尝试使用org.json访问数据,并使用生成器用户作为默认数据,如果值不存在,您会得到类似jackson的东西,可能是null或默认值