【发布时间】:2019-10-25 23:48:04
【问题描述】:
假设我们有一个像这样的 bean:
public class Response<T> {
private T data;
private double executionDuration;
private boolean success;
private String version;
//HOW TO Make Jackson to inject this?
private Class<T> dataClass;
public Optional<T> getData() {
return Optional.ofNullable(data);
}
public double getExecutionDuration() {
return executionDuration;
}
public Class<T> getDataClass() {
return dataClass;
}
public String getVersion() {
return version;
}
public boolean isSuccess() {
return success;
}
}
反序列化是这样发生的:
objectMapper.readValue(json, new TypeReference<Response<SomeClass>>() {});
我可以让 Jackson 将“SomeClass”类注入到我的 bean 中吗?我认为注入类型引用本身也可以。
【问题讨论】:
-
你能检查一下吗 -> stackoverflow.com/questions/11664894/…
-
@VinayVeluri in json 我对“dataClass”没有参考。杰克逊如何知道的唯一方法是类型引用。这就是为什么我想知道杰克逊是否可以注入这些信息。
-
它不能这样做,您可能想自己通过读取一个带有类作为字符串的值,然后使用 Class.forName 加载该类。不仅杰克逊,而且您自己也不能假设您知道该课程(该课程可以类加载)。然后用公认的类再次解析它
-
为什么不打电话给
data.getClass()? -
你可以在
getDataClass方法中添加null检查:data == null ? data.getClass() : Void.class