我正在尝试序列化/反序列化以下内容
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(value = IdBundleCombine.class),
@JsonSubTypes.Type(value = IdBundleDistinct.class) })
public abstract class IdBundle
{
String sharedId;
Long internalId;
//getters
}
public class IdBundleCombine extends IdBundle
{
//setters
}
public class IdBundleDistinct extends IdBundle
{
//setters
}
使用以下代码
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("foo.json"), someInstanceOfIdBundle);
这会产生以下内容(如您所见,没有类型信息):
{"sharedId":"foobar","internalId":1234}
missing property '@type' that is to contain type id
所以当我尝试反序列化它时出现错误。
我尝试了所有参数组合, @JsonTypeInfo
但@JsonSubTypes
我找不到要在我的文件中显示的类型信息。我还尝试@JsonTypeName
在 subType 上玩,但没有结果。
我唯一的猜测是我在映射器上做错了,但我找不到任何关于这个主题的东西,因为大多数人似乎不希望类型信息出现在 json 字符串中,或者有反序列化过程的问题。