3

我正在使用Jackson JSON 库StdDeserializer制作自定义反序列化器(扩展),但我无法弄清楚构造函数参数的目的是什么。杰克逊是用来做什么的?仅仅是因为 Java 没有具体化的泛型,而 Jackson 需要有关您正在创建实例的泛型类型的更多信息吗?Class<?>JavaType valueType

4

1 回答 1

2

Jackson 将 JSON 结构与 java 类匹配。就像 JAXB 将 java 类映射到 XSD-s 一样。

所以,这个Class<?>(或 JavaType)定义了哪个 java 类属于这个反序列化器。这些 java 类可以是任何具有正确注解的类,例如@JsonProperty.

另一个问题:为什么这个类是通用的?之所以如此,是因为[java.lang.Class][1]它是通用的。如果你想正确地做到这一点,那么你可以像这样指定它:

StdDeserializer serializer = new StdDeserializer(YourClass.class);

关键是StdSerializer 不绑定您可以指定的类。

于 2016-09-09T08:04:59.560 回答