gpt4 book ai didi

java - Android gson 无效的 ClassCastException

转载 作者:搜寻专家 更新时间:2023-11-01 09:05:21 26 4
gpt4 key购买 nike

您好,我有一个 Json 字符串

   {"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}

及其域为This

public class Line{
private String line;

public String getLine(){
return this.line;
}
public void setLine(String line){
this.line = line;
}
}



public class Lines{
private List lines;

public List getLines(){
return this.lines;
}
public void setLines(List lines){
this.lines = lines;
}
}

并将 gson 映射到对象

仅供引用:对于 jsonString,我传递的是字符串而不是 JSON URL(使用 HttpGet)

    Line ln =null;
Gson gson = new Gson();
ln = gson.fromJson(jsonString, Line.class); not the URL
return ln;

抛出的异常是:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sab.loc/com.sab.loc.MainActivity}: java.lang.ClassCastException: com.sab.loc.Line cannot be cast to java.util.List

我不确定出了什么问题,因为我认为我使用 http://jsongen.byingtondesign.com/ 生成的类定义是正确的

知道它哪里做错了吗?

最佳答案

您的jsonString 包含分配给 的对象的数组列表

{"lines":[{"line":"COLOMBO - BADULLA"},...]}

因此,您尝试将此 jsonString 数据映射到的类必须有一个 lines 变量。

Line.java 类没有 lines 变量。

试试这个:

public class Lines {
private List<Line> lines;

public List<Line> getLines(){
return this.lines;
}
public void setLines(List<Line> lines){
this.lines = lines;
}
}

public class Line {
private String line;

public String getLine(){
return this.line;
}
public void setLine(String line){
this.line = line;
}
}

还有这个:

Lines ln = new Gson().fromJson(jsonString, Lines.class);

关于java - Android gson 无效的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12275533/

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