您好我想将球衣1.x更新为2.x,杰克逊更新为MOxy。 但我不知道如何在MOxy中编组和解组抽象类。
在杰克逊,它完全使用自定义解析器。 这是我的示例代码。
豆
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.PROPERTY)
@JsonTypeIdResolver(AnimalResolver.class)
abstract class animal{
protected String name;
}
public class Cat extends Animal{
private CatBreed breed;
}
public class Dog extends Animal {
private DogBreed breed;
}
分解器
public class AnimalResolver extends TypeIdResolverBase{
....
@Override
public String idFromValueAndType(Object context, Class<?> suggestedType) {
if (Dog.class.isAssignableFrom(suggestedType)) {
return "dog";
} else if (Cat.class.isAssignableFrom(suggestedType)) {
return "cat";
}
throw new IllegalArgumentException();
}
@Override
public JavaType typeFromId(DatabindContext context, String id) throws IOException {
TypeFactory typeFactory = (context != null) ? context.getTypeFactory() : TypeFactory.defaultInstance();
if ("dog".equals(id)) {
return typeFactory.constructType(Dog.class);
} else if ("cat".equals(id)) {
return typeFactory.constructType(Cat.class);
}
throw new IllegalArgumentException();
}
}
我怎么能在MOxy中这样做?