考虑以下JSON对象:
{
"selector": {
"id": "77112778040"
},"data": {
"foo": "bar","_dmType": "http://www.example.com/foo/bar#SomeObject"
},"_dmType": "http://www.example.com/something#OtherObject"
}
Java对象的示例(跳过的样板代码):
package com.example.something;
public class OtherObject {
private Selector selector;
private Object data;
}
package com.example.something;
public class Selector {
private String id;
}
package com.example.foo.bar;
public class SomeObject {
private String foo;
}
当然,我知道如何将_dmType值映射到适当的Java类(这只是从xds文件生成的类中的名称空间和对象类型名称)。
我尝试使用自定义StdTypeResolverBuilder
和TypeIdResolverBase
。它向所有对象添加了自定义属性,而冗余是多余的-我只想为根类型添加cutom类型属性,而wchich是其他类型的扩展。
反序列化又如何呢?仅当树中的所有对象都具有_dmType时,它才有效。我的课程没有@JsonTypeInfo
批注,我正在使用JacksonAnnotationIntrospector
。