预计BEGIN_OBJECT但是STRING

时间:2017-03-22 09:34:11

标签: json retrofit2 android gson

我已经检查了其他相关问题,但他们的建议都不适用于我的案例。我正在使用Retrofit 2.2和GSON来获得Rest响应: 这就是响应的样子:

   {"idUser":0,"nom":"kaddour","prenom":"hanedi","login":"hanedi@gmail.com","password":null,"genre":"f","adresse":"ettahrir","codePostal":8050,"tel":20333473,"active":0,"panneaux":null,"lesalertes":null,"paysuser":null,"ville":null}

它是一个有效的json格式,但每当我使用这段代码调用时,我都会得到Expected Begin_Object异常:

         apiService = RestService.createService(SolarAPIService.class);
    Call<User> call = apiService.authentif(email, pass);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, retrofit2.Response<User> response) {
            user=response.body();}

我无法找到出错的地方。 任何帮助赞赏! 修改这是我的用户类:

        public class User {
@SerializedName("idUser")
@Expose
private int idUser;
@SerializedName("nom")
@Expose
private String nom;
@SerializedName("prenom")
@Expose
private String prenom;
@SerializedName("login")
@Expose
private String login;
@SerializedName("password")
@Expose
private String password;
@SerializedName("genre")
@Expose
private String genre;
@SerializedName("adresse")
@Expose
private String adresse;
@SerializedName("codePostal")
@Expose
private int codePostal;
@SerializedName("tel")
@Expose
private int tel;
@SerializedName("active")
@Expose
private int active;
@SerializedName("panneaux")
@Expose
private List<PanneauV> panneaux;
@SerializedName("lesalertes")
@Expose
private List<Alerte> lesalertes;
@SerializedName("paysuser")
@Expose
private Pays paysuser;
@SerializedName("ville")
@Expose
private Ville ville;
     //Constructor with arguments and Constructor without arguments
     //getters and setters

1 个答案:

答案 0 :(得分:0)

您的User类必须实现Serializable。

如果名称相同,则不需要使用SerializeName覆盖您的属性。 我想你也可以删除@expose。