gpt4 book ai didi

java - Jackson - 反序列化通用类变量

转载 作者:IT老高 更新时间:2023-10-28 21:01:04 24 4
gpt4 key购买 nike

我错误地发布了问题。我在这里正确地发布了问题......

我得到一个 json 字符串作为 HTTP 响应。我知道它的结构。如下:

public class Json<T> {
public Hits<T> hits;
}
public class Hits<T> {
public int found;
public int start;
public ArrayList<Hit<T>> hit;
}
public class Hit<T> {
public String id;
public Class<T> data;
}

“数据”字段可以属于任何类。我只会在运行时知道它。我会把它作为参数。这就是我反序列化的方式。

public <T> void deSerialize(Class<T> clazz) {
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(jsonString, new TypeReference<Json<T>>() {});
}

但我收到一个错误 -

无法从 java.lang.class 访问私有(private) java.lang.class.Class()。未能设置访问权限。无法使 java.lang.Class 构造函数可访问

最佳答案

如果泛型类型仅动态可用,则需要显式构建 JavaType:

// do NOT create new ObjectMapper per each request!
final ObjectMapper mapper = new ObjectMapper();

public Json<T> void deSerialize(Class<T> clazz, InputStream json) {
return mapper.readValue(json,
mapper.getTypeFactory().constructParametricType(Json.class, clazz));
}

关于java - Jackson - 反序列化通用类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com