【问题标题】:Retrofit 2 error in Json parsingJson解析中的Retrofit 2错误
【发布时间】:2016-02-18 06:45:46
【问题描述】:

我想在我的网址上发送一个不带参数的帖子回复。然而我得到的回应是这样的

[Lcom.example.c4u015.retrotestapp.Questions;@97ddd71

但实际的反应是这样的

 {
"MemberDays": "[{"Dt":"02/19/2016","AM":"0","AMS":"1","NS":"0","NSS":"0","PM":"1","PMS":"0","SB":"0","DS":"0","Note":""},{"Dt":"02/25/2016","AM":"0","AMS":"0","NS":"0","NSS":"0","PM":"0","PMS":"0","SB":"0","DS":"0","Note":""}]"
"Message": ""
"Status": "0"
}

这是我的代码。

   Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://192.168.1.99:82/MembersWS.svc/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        gitAPI stackOverflowAPI = retrofit.create(gitAPI.class);

        Call<Questions[]> call = stackOverflowAPI.loadQuestions();

         call.enqueue(new Callback<Questions[]>() {
             @Override
             public void onResponse(Response<Questions[]> response, Retrofit retrofit) {
                 if (response.isSuccess()) {
                     Questions[] user = response.body();
                     Log.e("parsed"," on response");
                     Log.e("response", response.body().toString()+" "+response.raw().toString());
                 } else {
                     int statusCode = response.code();
Log.e("status",""+statusCode);
                     // handle request errors yourself
                     ResponseBody errorBody = response.errorBody();
                 }
                 pd.dismiss();


             }

             @Override
             public void onFailure(Throwable t) {
                 pd.dismiss();
                 Log.e("error", t.getLocalizedMessage());
                 Toast.makeText(MainActivity.this, t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
             }
         });

这是我用过的界面

public interface gitAPI {
    @POST("GetMemberAvailability/MBR0011581")
    Call<Questions[]> loadQuestions();
}

【问题讨论】:

  • response.body.toString() 应该类似于 [Lcom.example.c4u015.retrotestapp.Questions;@97ddd71。问题是什么?或者想要的效果是什么?
  • 如何获取我得到的原始响应 json?
  • 您正在打印您所看到的对象,Log.i("response",user[0].getXXX()); 的输出将是什么,其中 XXX 是类 Questions 的任何 getter 方法
  • 对象用户没有得到问题类的getter。无法解决
  • 您使用[] 吗?就像我告诉你的那样user[0].get...

标签: android json retrofit2


【解决方案1】:

您正在打印 toString() 的输出,在这种情况下是 object id,它的值是您看到的 [Lcom.example.c4u015.retrotestapp.Questions;@97ddd71

您的响应是一个 Question 类型的数组,因此要打印输出,您必须遍历数组的项目并调用 getters,例如:

user[0].getXXX(); 其中 XXX 是类 Questions 的任何 getter 方法

或者您可以使用for loop 或其他您希望的过程

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2019-02-20
    • 1970-01-01
    • 2018-12-17
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2019-01-19
    相关资源
    最近更新 更多