java - 如何获取 Jackson ObjectMapper 的通用类型

标签 java jackson type-erasure

Java 通常会在编译时删除 Generics 数据,但有可能获得该信息(Jackson ObjectMapper 做得很好)。

我的问题:我有一个具有 List 属性的类:

public class User {
    public List<Long> listProp;//it is public only to keep the example simple
}

如何获得正确的 TypeReference(或 JavaType?),以便我可以通过编程方式将 JSON 字符串映射到正确的列表类型,具有 的实例code>Class类(User.class)和属性名(listProp)?我的意思是:

TypeReference typeReference = ...;//how to get the typeReference?
List<Long> correctList = om.readValue(jsonEntry.getValue(), typeReference);//this should return a List<Long> and not eg. a List<Integer>

最佳答案

您是否尝试过映射器的 constructType 方法?

Type genericType = User.class.getField("listProp").getGenericType();
List<Long> correctList = om.readValue(jsonEntry.getValue(), om.constructType(genericType));

关于java - 如何获取 Jackson ObjectMapper 的通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17568497/

相关文章:

java - "Serializable"类中的字段应该是 transient 的或可序列化的

java - 如何创建动画方法并将其放入绘制方法中?我的代码不起作用

swift - 使用 `Self` 作为参数的方法键入删除

java - 使用泛型类层次结构时出现编译错误

java - 尝试在空对象引用上调用虚拟方法

java - 你如何覆盖 Jackson 2.0 中的空序列化程序?

java - Jackson - 处理多种类型的 JSON

json - Scala - 如何将 json 作为输入参数并解析它?

java - 无法读取 JSON : Unexpected end-of-input in field name

c++ - 什么是快速提升无符号整型元素数组大小的方法?