【问题标题】:Gson: Expected begin_array but was STRINGGson:预期 begin_array 但为 STRING
【发布时间】:2014-04-01 19:53:21
【问题描述】:

我在解析 JSON 数据时遇到以下错误:

应为 begin_array,但在第 1 行第 34 列为 STRING

我找不到解决方案。我的 JSON 如下:

   {"result":0,"count":2,"records":"[{\"name\":\"name1\",
    \"id\":\"28\",
 \"photo\":\"\\\/gallery\\\/c9\\\/f0f8\\\/95fb\\\/c9f0f895fb98ab9159f51fd0297e236d\\\/28\\\/tb_uykzubjqmxbv6zkogdsd_c64962310e572f5e8a4c73a44a4fa3dd.jpg\"},{\"name\":\"name2\",
\"id\":\"134\",
\"photo\":\"\\\/gallery\\\/c9\\\/f0f8\\\/95fb\\\/c9f0f895fb98ab9159f51fd0297e236d\\\/134\\\/tb_23ffxuw9-5ys4iqtwztz_610982fa52cca03412dbc84ab0ea5e18.jpg\"}]"}

这是我的 PersonContent 类:

public class PersonContent {

    @SerializedName("result")
    public int result;
    @SerializedName("count")
    public int  count;
    @SerializedName("records")
    List<Person> records;


    public List<Person> getRecords() {
        return records;
    }

    public void setRecords(List<Person> records) {
        this.records = records;
    }

    public void setResults(int result) {
        this.result = result;
    }

    public int getResults(){
        return result;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getCount(){
        return count;
    }

以下是 Person 类:

public class Person implements Serializable {
        private static final long serialVersionUID = 1L;

        @SerializedName("name")
        public String name;
        @SerializedName("id")
        public String id;
        @SerializedName("photo")
        public String photo;


        public Person(){

        }
        public Person( String name,String id,String photo) {
            this.id = id;
            this.name = name;
            this.photo = photo;

        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getPhoto() {
            return photo;
        }

        public void setPhoto(String photo) {
            this.photo = photo;
        }

    @Override
    public String toString() {
        return name;
    }
}

这是我反序列化前面提到的 JSON 数据的代码

private void Parse(){
InputStream source = retrieveStream(url);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);  
personlist = gson.fromJson(reader, PersonContent.class);
}

我已经尝试了此处找到的所有解决方案,但找不到相同的 JSON。 还有如下:com.google.gson.JsonSyntaxException: Expected BEGIN_ARRAY but was STRING

【问题讨论】:

    标签: java android json gson


    【解决方案1】:

    错误在您收到的 json 中: 你的班级需要一个数组,因为

     List<Person> records;
    

    但是在你的json中你有

    “记录”:[

    必须是:

    "records": [
    

    最后是 ]"},必须是

    ]}
    

    【讨论】:

    • 不,你不能,不是数组是字符串,但是你可以尝试将记录声明为字符串并再次解析得到数组。
    猜你喜欢
    • 1970-01-01
    • 2019-03-10
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多