在Java上创建通用Jackson JSON反序列化程序 问题

在Java上创建通用Jackson JSON反序列化程序 问题,java,json,generics,jackson,deserialization,Java,Json,Generics,Jackson,Deserialization,我的一些JSON对象有一个属性名“id”,因此我想创建一个通用的反序列化程序,它调用特定的方法从数据库中检索POJO。它还必须基于关系(字段)的上下文,而不是类 即反序列化程序(ParentA.sameChild)反序列化程序(ParentB.sameChild) 第一次尝试:@Annotations 类似的问题,但我不想将此信息添加到json对象中:您解决了这个问题吗?在字段级别使用通用反序列化程序时,我也有类似的问题。@mpprdev nope=/ class Parent { @De

我的一些JSON对象有一个属性名“id”,因此我想创建一个通用的反序列化程序,它调用特定的方法从数据库中检索POJO。它还必须基于关系(字段)的上下文,而不是类

反序列化程序(ParentA.sameChild)反序列化程序(ParentB.sameChild)

第一次尝试:@Annotations
类似的问题,但我不想将此信息添加到json对象中:您解决了这个问题吗?在字段级别使用通用反序列化程序时,我也有类似的问题。@mpprdev nope=/
class Parent {
   @Deserializer(using=MyIdDeserializer<Child>.class)
   public Child myChild;
}

class MyIdDeserializer<T extends ChildDAO> extends JsonDeserializer<T> {
   public T deserialize(JsonParser jp, DeserializationContext ctx) throws IOException, JsonProcessingException {
        JsonNode node = jp.getCodec().readTree(jp);
        Integer id = node.get("id").asInt();
        return T.find(id);
   }
}
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using=JsonSimpleName.SimpleNameSerializer.class)
public @interface JsonSimpleName {

    public static class SimpleNameSerializer extends JsonSerializer<JsonSimpleNameI> {
        @Override
        public void serialize(JsonSimpleNameI value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
            jgen.writeStartObject();
            jgen.writeNumberField("id", value.jsonId());
            jgen.writeStringField("name", value.jsonName());
            jgen.writeEndObject();
        }
    }
}

public interface JsonSimpleNameI {
    public Integer  jsonId();
    public String   jsonName();
}
@JsonSimpleName
protected MyClass myClass;