Jackson 的 StdDeserializer 的构造函数中使用的 Class<?> vc 或 JavaType valueType 是什么
What is Class<?> vc or JavaType valueType used for in the constructor of Jackson's StdDeserializer
我正在使用 Jackson JSON library 制作自定义解串器(扩展 StdDeserializer
),但我无法弄清楚构造函数参数的用途。 Class<?>
或 JavaType valueType
被 Jackson 用来做什么?是否只是因为 Java 没有具体化的泛型,而 Jackson 需要有关您正在创建实例的泛型类型的更多信息?
Jackson 将 JSON 结构与 java class 匹配。就像 JAXB 将 java classes 映射到 XSD-s.
因此,这个 Class<?>
(或 JavaType)定义了哪个 java class 属于这个反序列化器。这些 java class 可以是任何具有正确注释的内容,例如 @JsonProperty
.
另一个问题:为什么这个 class 是通用的?这是因为 [java.lang.Class][1]
是通用的。如果你想正确地做到这一点,那么你可以这样指定它:
StdDeserializer serializer = new StdDeserializer(YourClass.class);
重点是 StdSerializer
不绑定 您可以指定的 class。
我正在使用 Jackson JSON library 制作自定义解串器(扩展 StdDeserializer
),但我无法弄清楚构造函数参数的用途。 Class<?>
或 JavaType valueType
被 Jackson 用来做什么?是否只是因为 Java 没有具体化的泛型,而 Jackson 需要有关您正在创建实例的泛型类型的更多信息?
Jackson 将 JSON 结构与 java class 匹配。就像 JAXB 将 java classes 映射到 XSD-s.
因此,这个 Class<?>
(或 JavaType)定义了哪个 java class 属于这个反序列化器。这些 java class 可以是任何具有正确注释的内容,例如 @JsonProperty
.
另一个问题:为什么这个 class 是通用的?这是因为 [java.lang.Class][1]
是通用的。如果你想正确地做到这一点,那么你可以这样指定它:
StdDeserializer serializer = new StdDeserializer(YourClass.class);
重点是 StdSerializer
不绑定 您可以指定的 class。