com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $报错

使用gson出现的问题,logcat显示如下
Process: vip.markxu.instagram1, PID: 12426

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at vip.markxu.instagram.fuhaoyi.LoginActivity$1$1.run(LoginActivity.java:104)
        at android.os.Handler.handleCallback(Handler.java:754)

试过网上说的方法,每一个具体例子,大概都是说后台程序返回数据格式不正确,有理但没用。

-————————————————————————————————

代码段 UserPOJO类

public class UserPOJO {

    private String userid;
    private String account;
    private String password;
    private String userfavicon;
    private String username;
    private int status;

    public UserPOJO(String userid,String account,String password,String userfavicon,String username,int status){
        this.userid=userid;
        this.account=account;
        this.password=password;
        this.userfavicon=userfavicon;
        this.username=username;
        this.status=status;
    }


    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }


    public String getUserfavicon() {
        return userfavicon;
    }

    public void setUserfavicon(String userfavicon) {
        this.userfavicon = userfavicon;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}



应用gson代码段

   public void registerWithOkHttp(String address,String account,String password){
        HttpUtil.registerWithOkHttp(address, account, password, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //在这里对异常情况进行处理
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String responseData = response.body().string();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Gson gson=new Gson();     //报错地方
                        user = gson.fromJson(responseData, UserPOJO.class);
                        if(user.getStatus()==1){
                            SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = sharedPreferences.edit();
                            editor.putString("user_id", user.getUserid());
                            editor.putString("userfavicon",user.getUserfavicon());
                            editor.apply();
                            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                            startActivity(intent);
                            finish();
                        }
                        else{
                            Toast.makeText(LoginActivity.this,"注册失败",Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }

json格式:

package vip.markxu.instagram.xiexizhou.Utils;

import java.io.Serializable;
import java.util.List;

public class IndexJson implements Serializable {
    List<item> data;

    public List<item> getList() {
        return data;
    }

    @Override
    public String toString() {
        return "IndexJson{" +
                "data=" + data +
                '}';
    }

    public void setList(List<item> list) {
        this.data = list;
    }

    public static class item implements Serializable{
        private Integer comments_numb;
        private String contents;
        private String img;
        private String mime;
        private String post_id;
        private String postdate;
        private String userid;
        private String userfavicon;
        private String likes;
        private String username;
        private List<Comments> comments;

        public List<Comments> getComments() {
            return comments;
        }

        public void setComments(List<Comments> comments) {
            this.comments = comments;
        }

        public static class Comments implements Serializable{
            private String comment_id;
            private String comment_time;
            private String content;
            private String post_id;
            private String username;
            private String user_favicon;

            public String getUser_favicon() {
                return user_favicon;
            }

            public void setUser_favicon(String user_favicon) {
                this.user_favicon = user_favicon;
            }

            public String getComment_id() {
                return comment_id;
            }

            public void setComment_id(String comment_id) {
                this.comment_id = comment_id;
            }

            public String getComment_time() {
                return comment_time;
            }

            public void setComment_time(String comment_time) {
                this.comment_time = comment_time;
            }

            public String getContent() {
                return content;
            }

            public void setContent(String content) {
                this.content = content;
            }

            public String getPost_id() {
                return post_id;
            }

            public void setPost_id(String post_id) {
                this.post_id = post_id;
            }

            public String getUsername() {
                return username;
            }

            public void setUsername(String username) {
                this.username = username;
            }
        }

        @Override
        public String toString() {
            return "item{" +
                    "comments_numb=" + comments_numb +
                    ", contents='" + contents + '\'' +
                    ", img='" + img + '\'' +
                    ", mime='" + mime + '\'' +
                    ", post_id='" + post_id + '\'' +
                    ", postdate='" + postdate + '\'' +
                    ", userid='" + userid + '\'' +
                    ", userfavicon='" + userfavicon + '\'' +
                    ", likes='" + likes + '\'' +
                    ", username='" + username + '\'' +
                    '}';
        }

        public String getUserfavicon() {
            return userfavicon;
        }

        public void setUserfavicon(String userfavicon) {
            this.userfavicon = userfavicon;
        }

        public String getLikes() {
            return likes;
        }

        public void setLikes(String likes) {
            this.likes = likes;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public Integer getComments_numb() {
            return comments_numb;
        }

        public void setComments_numb(Integer comments_numb) {
            this.comments_numb = comments_numb;
        }

        public String getContents() {
            return contents;
        }

        public void setContents(String contents) {
            this.contents = contents;
        }

        public String getImg() {
            return img;
        }

        public void setImg(String img) {
            this.img = img;
        }

        public String getMime() {
            return mime;
        }

        public void setMime(String mime) {
            this.mime = mime;
        }

        public String getPost_id() {
            return post_id;
        }

        public void setPost_id(String post_id) {
            this.post_id = post_id;
        }

        public String getPostdate() {
            return postdate;
        }

        public void setPostdate(String postdate) {
            this.postdate = postdate;
        }

        public String getUserid() {
            return userid;
        }

        public void setUserid(String userid) {
            this.userid = userid;
        }
    }
}


求解决,具体方法

你都查到是后台程序返回数据格式不正确,那就把responseData的字符串打印出来,看到底对不对嘛