Java Android gson无效的ClassCastException
您好,我有一个Json字符串,如下所示Java Android gson无效的ClassCastException,java,android,gson,Java,Android,Gson,您好,我有一个Json字符串,如下所示 {"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},
{"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"}]}
其域类如下所示
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)
引发的异常是:
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
我不确定哪里出了问题,因为我认为我使用的类定义是正确的
知道哪里出错了吗?您的json没有直接返回
行类。
它返回行类。
您正试图将它转换为一行,而这不是一种类型的列表
它正在抛出类强制转换异常
您可以定义字段私有列表行
在Line.java类中
最好定义泛型私有列表行代码>在行中.java
类
和生成行的setter-getter存根
您的jsonString
包含分配给行的对象的数组或列表
{“行”:[{“行”:“科伦坡-巴杜拉”},…]}
因此,您尝试将此jsonString
数据映射到的类必须具有行
变量
Line.java
类没有Line
变量
试试这个:
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;
}
}
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);