【问题标题】:Retrofit2: null response when I try to get data from JSONRetrofit2:当我尝试从 JSON 获取数据时出现空响应
【发布时间】:2018-09-11 19:00:16
【问题描述】:

我想从我的 JSON 中获取数据,我已经使用 jsonschema2pojo 转换并在我的 android 项目中使用类名登录,但是当我尝试在我的类中获取数据时,它仍然得到空值。 这是我的代码

Login.java

 @SerializedName("id_user")
    @Expose
    private String idUser;
    @SerializedName("id_role")
    @Expose
    private String idRole;
    @SerializedName("username")
    @Expose
    private String username;
    @SerializedName("password")
    @Expose
    private String password;
    @SerializedName("email")
    @Expose
    private String email;
    @SerializedName("id_peg")
    @Expose
    private Object idPeg;
    @SerializedName("id_pel")
    @Expose
    private String idPel;

登录活动

 public void login() {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    LoginAPI api = retrofit.create(LoginAPI.class);

    Call<Login> call = api.Login(username, password);

    call.enqueue(new Callback<Login>() {
        @Override
        public void onResponse(Call<Login> call, Response<Login> response) {
            response.body();
            Integer value=response.body().getValue();
            String message=response.body().getMessage();
            progress.dismiss();

            if(value==1){
                String email=response.body().getEmail();
                Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onFailure(Call<Login> call, Throwable t) {
            t.printStackTrace();
            progress.dismiss();
            Toast.makeText(LoginActivity.this,"Network Connection Error",Toast.LENGTH_SHORT).show();
        }
    });
}

【问题讨论】:

  • 请显示 JSON 结构。可能存在数据不匹配。
  • [[{"id_user":"10","id_role":"5","username":"komang","password":"komang","email":"komangarinanda@ gmail.com","id_peg":null,"id_pel":"6"}]]
  • 这是我的 JSON 结构
  • @Kharisma 请发布从 API 获得的完整回复?
  • 很明显,JSON 结构已经是我的错误了,谢谢

标签: android json retrofit response


【解决方案1】:

同时使用@Expose 和@SerializedName 可能会出现问题:

任意使用:

@Expose
private String id_user;

@SerializedName("id_user")
private String idUser;

This 可能会有所帮助。

编辑

我还注意到响应是一个数组而不是一个对象!所以调用会是这样的:

Call<Login[]> call = api.Login(username, password);

相应的响应也将使用 Login[] 而不是 Login。

【讨论】:

  • 不会造成问题
猜你喜欢
  • 2021-02-27
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2022-09-24
  • 2021-06-17
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
相关资源
最近更新 更多