如何将Retrofit响应转换为JsonObject

时间:2017-11-24 03:27:48

标签: android retrofit

改进JSON响应:

{
 "data": [{
        "id": 1224410,
        "amount": "900200.00",
        "meta": {
            "referenceId": "referenceId","time": "2017-11-01T15:42:26Z","type": "send"
        }
    }],
"version": "v2"
}

这些是模型结构:

public class MyOject {
    @SerializedName("id")
    private int mId;
    @SerializedName("amount")
    private double mAmount;
    @SerializedName("meta")
    private JSONObject mMeta;
}

我总是在null变量

中获得mMeta

更新代码 class Wrapper用于解析来自JSONObject的响应:

public class ResponseWrapper<DataType> {
    @SerializedName("data")
    private DataType mData;
    @SerializedName("version")
    private String mVersion;
}

这是回调。我用它来指定要接收的数据类型。

public class CallbackWithData<T> implements Callback<ResponseWrapper<T>> {
    @Override
    public final void success(ResponseWrapper<T> data, Response response) {
        this.success(data.getData(), data.getVersion());
    }
    public abstract void success(T data, String version);
}

这是我使用的API,它定义了所需的对象。

 @GET("/transaction")
 void listTransactions(@Header(Constants.Header.LOGIN_SECRET) String loginSecret, CallbackWithData<List<MyObject>> callback);

1 个答案:

答案 0 :(得分:4)

使用HashMap而不是JSONObject:

    @SerializedName("meta")
    private HashMap mMeta;