使用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的字符串打印出来,看到底对不对嘛