java - Jackson:如何在运行时使用泛型解码到类?

标签 java json generics jackson runtime

我需要在运行时使用泛型将 json 字符串解码为类。像这样的东西:

String classname = "this.is.a.class.name.read.at.runtime";
Class cls = Class.forName(classname);
mapper.readValue(jsonPayload, new TypeReference<GenericClass<cls>>() {});

显然,上述方法行不通,我也找不到好的解决方案。

最佳答案

以下代码解决了我的问题:

String genericParameterClassName = "this.is.a.class.name.read.at.runtime";
Class clazz = Class.forName(genericParameterClassName);
JavaType = mapper.getTypeFactory().constructParametrizedType(GenericClass.class,GenericClass.class,clazz);
GenericClass m = mapper.readValue(jsonPayload, type);

关于java - Jackson:如何在运行时使用泛型解码到类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336646/

相关文章:

java - Springframework 安全性,无法为 POST 方法提交 html 表单

python - 将带有嵌套 header 的 CSV 转换为 JSON

python - 基于 Websockets 的存储后端

java - 如何根据不同对象的返回结果创建对象的强制类型转换

c# - 在从泛型派生的类集合中使用泛型基类

Java:如何发送 XML 请求?

java - Hadoop HDFS MapReduce 输出到 MongoDb

java - 不带破折号的 CliBuilder 参数

c# - 如何优雅地将下面的文字解析成字典

c# - 泛型的奇怪使用