小编use*_*286的帖子

通过字段进行杰克逊多态反序列化

比方说,我有一堂课

public class A{
  private UUID typeId;
  private B data;
}

public abstract class B{
  private String a;
}

public class BChildOne extends B{
  ... some variables
}

public class BChildTwo  extends B{
  ... some variables
}
Run Code Online (Sandbox Code Playgroud)

B类的type根据A的typeId在变化,所以如果A的typeId为“XXX”,则数据字段类型为BChildOne,如果A的typeId为“YYY”,则数据字段类型为BChildTwo。

我怎样才能做到这一点?

所以我试过了;

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility =
JsonAutoDetect.Visibility.NONE, setterVisibility = 
JsonAutoDetect.Visibility.NONE)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = 
JsonTypeInfo.As.EXTERNAL_PROPERTY , property = "typeId")
@JsonSubTypes({
 @JsonSubTypes.Type(value = BChildOne.class, name = "40ad2fe6-e672-4f0e- 
986e- 
 619c7a1a3223") }
 )
 public abstract class B{
Run Code Online (Sandbox Code Playgroud)

但我遇到了以下错误;

意外的标记 (END_OBJECT),预期的 …

java jackson deserialization fasterxml

2
推荐指数
1
解决办法
3347
查看次数

标签 统计

deserialization ×1

fasterxml ×1

jackson ×1

java ×1