如何用两个Json对象解析Retrofit的响应?

时间:2018-04-03 15:01:47

标签: android model retrofit

我无法找到问题的解决方案。当我向服务器发送数据时,它工作正常但我无法从同一方法获得结果。

这是我的JSON回复:

  

{" OK":"真"" MSG":"有源""数据":{ " _id":" 1""名称":" AAA""代码":1111,&#34 ;状态":1,"的updated_at":" 2018年4月3日   07:26:56"," created_at":" 2018-04-03 07:17:05"," key":" mmnnjmn34564lt& #34;}}

我可以得到" ok"和" msg"但我无法获得"数据"领域。我怎么解决?

接口

public interface ApiInterfaceService {

@POST("active")
Call<Data> createConfirmCode(@Body Data data);

OkHttpClient okHttpClient=new OkHttpClient();
    Retrofit retrofit=new Retrofit.Builder()
            .baseUrl(ApiClientConfig.BASE_URL)
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    apiInterfaceService =retrofit.create(ApiInterfaceService.class);
 }

Data.java

public class Data {

@SerializedName("ok")
public String ok;

@SerializedName("msg")
private String msg;

@SerializedName("data")
private List<dataResponse> data;
}

dataResponse.java

public class dataResponse{

@SerializedName("_id")
public Integer _id;

@SerializedName("name")
public String name;


@SerializedName("code")
public Integer code;

@SerializedName("status")
public Integer status;
}

我的代码:

    Data datamodel=new Data();
    Call<Data> call = apiInterfaceService.createConfirmCode(datamodel);
    call.enqueue(new Callback<Data>() {
        @Override
        public void onResponse(Call<Data> call, Response<Data> response) {
            if (response.isSuccessful()) {

     Log.i(InitialClass.TAG,String.valueOf(response.body().getMsg()+" "+response.body().getData());
            }
        }
        @Override
        public void onFailure(Call<Data> call, Throwable t) {
            Log.i(InitialClass.TAG,t.getMessage()+" "+ t.getCause());
        }
    });

1 个答案:

答案 0 :(得分:1)

你json看起来格格不入,把它粘贴到http://jsonviewer.stack.hu/并格式化它以查看你提供给我们的字符串中的json格式,如果这真的是你收到的json,问题不在android端但是在服务器端。

使用新的json编辑,似乎您正在请求数组

@SerializedName("data")
private List<dataResponse> data;

但你的json返回一个对象

"data": {
    "_id": "1",
    "name": "aaa",
    "code": 1111,
    "status": 1,
    "updated_at": "2018-04-03 07:26:56",
    "created_at": "2018-04-03 07:17:05",
    "key": "mmnnjmn34564lt"
  }