Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android gson无效的ClassCastException_Java_Android_Gson - Fatal编程技术网

Java Android gson无效的ClassCastException

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"},

您好,我有一个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"}]}
其域如下所示

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);