gpt4 book ai didi

collections - 使用 gson 2 反序列化集合的好奇心

转载 作者:行者123 更新时间:2023-12-03 03:38:14 25 4
gpt4 key购买 nike

我有这些类(class)

public class Application {
public String name;
public String ico;
public List<MenuStruct> menu =new ArrayList<MenuStruct>();
//Constructor
public Application() { }
}
public class MenuStruct {
public String id;
public String type;
public String parent;
public String name;
public String secId;
//Constructor
public MenuStruct() {}
}

如果我尝试以这种方式直接反序列化集合:

ApplicationManager apm= new ApplicationManager();
s="[ {\"name\":\"reg_salida\" , \"ico\":\"document-open-2-32x32.ico\" }]";
apm.apps=(new Gson()).fromJson(s,apm.apps.getClass() );
for (Application ap:apm.apps){
System.out.println(ap.name); //gets error here
}

我收到 java.lang.ClassCastException。

但是,如果我尝试反序列化其包含类 ApplicationManager,它不会失败。

s="{ \"apps\": [ {\"name\":\"reg_salida\" , \"ico\":\"document-open-2-32x32.ico\" }]}";
ApplicationManager apm=(new Gson()).fromJson(s,ApplicationManager.class);
for (Application ap:apm.apps){
System.out.println(ap.name); // now no errors here! and shows reg_salida
}

这是gson 2.2.4的bug吗?或者也许我做的事情不正确?

爱德华。

最佳答案

您必须提供属性类的完整定义。您的示例应如下所示:

manager.apps = gson.fromJson(json, new TypeToken<List<Application>>() {}.getType());

关于collections - 使用 gson 2 反序列化集合的好奇心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959268/

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