java - Jackson 的 StdDeserializer 的构造函数中使用的 Class<?> vc 或 JavaType valueType 是什么

标签 java json jackson jackson-modules

我正在使用 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/

相关文章:

c# - 如何使用 C# 从套接字检索 Java 数据?

c# - ServiceStack.Text 和 ISODate ("")

java - 如何不将组合对象包含到 json 中?

java - jackson 对象映射器 : Issues with date serialization and deserialization

java - log4j 不同级别的详细信息

java - 无法检索我希望使用存储过程选择的值

java - 仅垂直调整 JTextArea 大小

javascript - D3 - 查找具有相同数据的 SVG 元素

javascript - 在 React JS 中使用 Axios 迭代数据

java - 解析包含数组字段的 JSON 数组