我正在使用Jackson JSON library制作自定义反序列化器(扩展StdDeserializer
),我无法弄清楚构造函数参数的用途是什么。杰克逊使用的Class<?>
或JavaType valueType
是什么?是不是因为Java没有具体化的泛型,杰克逊需要更多关于你正在制作实例的泛型类型的信息?
答案 0 :(得分:2)
Jackson将JSON结构与java类匹配。就像JAXB将java类映射到XSD-s。
因此,这个Class<?>
(或JavaType)定义了哪个java类属于这个反序列化器。这些java类可以是具有正确注释的任何内容,例如@JsonProperty
。
另一个问题:为什么这个类是通用的?这是因为[java.lang.Class][1]
是通用的。如果你想正确地做,那么你这样指定:
StdDeserializer serializer = new StdDeserializer(YourClass.class);
关键是StdSerializer
不绑定您可以指定的类。