Android 如何将改装响应转换为JsonObject
改装JSON响应:Android 如何将改装响应转换为JsonObject,android,retrofit,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
{
"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;
}
我总是在mMeta
变量中得到null
更新代码
用于解析来自JSONObject的响应的类包装器:
public class ResponseWrapper<DataType> {
@SerializedName("data")
private DataType mData;
@SerializedName("version")
private String mVersion;
}
公共类响应包装器{
@SerializedName(“数据”)
私有数据类型mData;
@SerializedName(“版本”)
私有字符串版本;
}
这是回拨电话。我使用它来指定要接收的数据类型
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);
}
public类CallbackWithData实现回调{
@凌驾
公共最终作废成功(响应包装器数据、响应){
成功(data.getData(),data.getVersion());
}
公开摘要作废成功(T数据,字符串版本);
}
这是我使用的API,它定义了所需的对象
@GET("/transaction")
void listTransactions(@Header(Constants.Header.LOGIN_SECRET) String loginSecret, CallbackWithData<List<MyObject>> callback);
@GET(“/transaction”)
void listTransactions(@Header(Constants.Header.LOGIN\u SECRET)字符串loginSecret,CallbackWithData callback);
使用HashMap而不是JSONObject:
@SerializedName("meta")
private HashMap mMeta;
当您解析data@diegoveloper我使用
reformation
和defaultGsonConverter
来解析响应。如果json是字符串值,为什么要在mAmount上使用double?使用restapter.Builder restBuilder=new restapter.Builder().setClient(new-OkClient(new-OkHttpClient())).setConverter(新GsonConverter(gson))
和自动解析到MyObject
我通过注释声明的值你能把改型接口放进去吗?我很乐意帮助你:)@diegoveloper你能解释一下吗。它是如何工作的吗?看起来gson无法将json对象反序列化到JSONObject类中,那么HashMap是一个有效的选项