gpt4 book ai didi

java - 对象列表和Gson字符串之间的转换

转载 作者:行者123 更新时间:2023-12-01 04:26:06 25 4
gpt4 key购买 nike

我将对象列表转换为 json 字符串,然后返回对象列表,如下所示:

List<Work> list = new ArrayList<Work>();
Work w1 = new Work();
Work w2 = new Work();
list.add(w1);
list.add(w2);

String str = GsonUtils.getJsonString(list);

Type listType = new TypeToken<ArrayList<Work>>() {
}.getType();
List<Work> list1 = new Gson().fromJson(str, listType);

这工作完全正常并返回列表 List<Work> .

现在我通过提取如下方法来执行相同的操作:

List<Work> list = new ArrayList<Work>();
Work w1 = new Work();
Work w2 = new Work();
list.add(w1);
list.add(w2);

String str = GsonUtils.getJsonString(list);

Type listType = new TypeToken<ArrayList<Work>>() {
}.getType();
List<Work> list1 = getListFromJSON(str, Work.class);

其中方法定义如下:

public <T> List<T> getListFromJSON(String str, Class<T> type) {
Type listType = new TypeToken<ArrayList<T>>() {
}.getType();
List<T> list = new Gson().fromJson(str, listType);
return list;
}

这次会导致错误:

Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to com.restfb.types.User$Work
at expt.ExptGsonList.main(ExptGsonList.java:45)

请帮助我知道我哪里出了问题以及如何使用该方法使其正常工作?

最佳答案

将方法签名更改为

public <T> List<T> getListFromJSON(String str, Type type)

并传递listType

关于java - 对象列表和Gson字符串之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18480170/

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