@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"superClassProperty",
"schemaVersion"
})
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "schemaVersion")
@JsonSubTypes({
@JsonSubTypes.Type(value = SubClassV1.class, name = "1.0"),
@JsonSubTypes.Type(value = SubClassV2.class, name = "2.0"),
})
public class SuperClass {
@JsonProperty("superClassProperty")
private String superClassProperty;
@JsonProperty("schemaVersion")
private String schemaVersion = "1.0";
@JsonProperty("superClassProperty")
public String getSuperClassProperty() {
return superClassProperty;
}
@JsonProperty("superClassProperty")
public void setSuperClassProperty(String superClassProperty) {
this.superClassProperty = superClassProperty;
}
@JsonProperty("schemaVersion")
public String getSchemaVersion() {
return schemaVersion;
}
@JsonProperty("schemaVersion")
public void setSchemaVersion(String schemaVersion) {
this.schemaVersion = schemaVersion;
}
}
public class SubClassV1 extends SuperClass {
@JsonProperty("property1")
private String property1;
@JsonProperty("property1")
public String getProperty1() {
return this.property1;
}
@JsonProperty("property1")
public void setProperty1(String var1) {
this.property1 = var1;
}
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
public class SubClassV1 extends SuperClass {
@JsonProperty("property2")
private String property2;
@JsonProperty("property2")
public String getProperty2() {
return this.property2;
}
@JsonProperty("property2")
public void setProperty2(String var2) {
this.property2 = var2;
}
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
我的JSON字符串是:
{
"superClassProperty":"testValue",
"property1":"property1"
}
我想要实现的是,当JSON中没有提供schemaVersion时,能够在默认情况下反序列化到SubClassV1,但即使在Superclass中将schemaVersion初始化为“1.0”时,我仍然会收到以下错误:
似乎可以使用JsonTypeInfo的defaultImpl属性。
我对Jackson和类型层次结构有以下问题。我正在序列化一个类SubA,该类将扩展为一个字符串,然后尝试将其反序列化回来。当然,在编译时,系统不知道它是基还是SubA,因此我希望它是基,如果它是SubA,则会在编译后执行一些其他操作。 我的基本类看起来像: ...和一个派生自的类: ... 我试图执行以下代码: String是: 但我一次又一次地犯同样的错误。映射器现在知道如何处理另一个类参数-它
我正在尝试为接受JSON输入的前端库创建一个java SDK。本质上,此SDK将特定类型的对象转换为JSON,然后由前端库使用。 我正在使用杰克逊的多态序列化/反序列化使用它的注释系统。 我有一个基类a和扩展a的两个子类B和C。类a有一个类型字段,我用它来决定要使用哪个类(B或C)。语法如下所示: 现在,当我使用Jackson的ObjectMapper函数读取字符串化的JSON并转换为类A时,我根
我想为我们的REST API实现一个自定义的反序列化器,它不仅被Java应用程序使用。因此,我不想让Jackson将类型信息放入序列化的JSON中。 我目前正在努力反序列化<code>CollectionExpand</code>,因为它包含特定<code>ResourceModel</code>的<code>数据</code>列表。 < code>ResourceModel是一个接口,每个< c
I'va是一个OID接口,可以由许多具体类型实现: 现在我有一个具有两个字段的对象,一个使用抽象接口类型(OID)定义,另一个使用具体类型(MyOID)定义 我想使用jackson以不同的方式序列化/反序列化字段,无论它们是使用抽象接口类型还是具体类型定义的: 注意,被序列化,包括类型信息(多态序列化),而被序列化为文本 为此,我将OID接口注释为: 并为每个具体类型分配了类型id: 最后,对容器
问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列
我有以下几个类,我想使用Jackson反序列化JSON字符串。 PushNotificationMessage.java 设备信息。Java语言 IOSDeviceInfo。Java语言 WebDeviceInfo.java 我有以下要反序列化的JSON内容: 我只需使用ObjectMapper来尝试执行反序列化。 当我这样做时,我得到: com.fasterxml.jackson.databin