我正在使用 Jackson JSON library 制作自定义解串器(扩展 StdDeserializer
)而且我无法弄清楚构造函数参数的目的是什么。什么是 Class<?>
或 JavaType valueType
jackson 用的?是否只是因为 Java 没有具体化的泛型,而 Jackson 需要有关您正在创建实例的泛型类型的更多信息?
最佳答案
Jackson 将 JSON 结构与 Java 类匹配。就像 JAXB 将 java 类映射到 XSD-s 一样。
所以,这个Class<?>
(或 JavaType)定义了哪个 java 类属于这个反序列化器。这些 java 类可以是任何具有正确注释的东西,比如 @JsonProperty
.
另一个问题:为什么这个类是泛型的?这是因为 [java.lang.Class][1]
是通用的。如果你想正确地做到这一点,那么你可以这样指定它:
StdDeserializer serializer = new StdDeserializer(YourClass.class);
重点是 StdSerializer
不绑定(bind)您可以指定的类。
关于java - Jackson 的 StdDeserializer 的构造函数中使用的 Class<?> vc 或 JavaType valueType 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406574/