gpt4 book ai didi

java - 在 Gson 中,如何反序列化任意类的列表映射?

转载 作者:行者123 更新时间:2023-11-30 08:08:30 27 4
gpt4 key购买 nike

我有一个返回数据的 API,如下所示:

{
gene: [ ],
attribute: [ ],
dataset: [ ]
}

每个List都包含一个应反序列化为特定类的对象。例如,dataset 列表中的每个 JSON 对象都应反序列化为 Dataset 类。我无法让它发挥作用。这是我当前的尝试:

Type listType = new TypeToken<HashMap<String, List<Object>>>() {}.getType();
HashMap<String, List<Object>> map = new Gson().fromJson(json, listType);
List<Dataset> datasets = (List<Dataset>) (Object) map.get("dataset");
Dataset ds = datasets.get(0);

我收到的错误是:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to Dataset

提前致谢。

最佳答案

一位同事建议编写一个包装类来描述模式。这使得序列化和反序列化变得简单。

public class JsonSchema {

private List<Dataset> datasets;

...

public List<Dataset> getDatasets() {
return datasets;
}

public void setDatasets(List<Dataset> datasets) {
this.datasets = datasets;
}

...
}

然后,为了序列化 JSON,我使用 setter 并反序列化 JSON,我写道:

JsonSchema jsonSchema = new Gson().fromJson(json, JsonSchema.class);
List<Dataset> datasets = jsonSchema.getDatasets();

关于java - 在 Gson 中,如何反序列化任意类的列表映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30739975/

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