我正在使用改造高效网络库,但我无法处理包含单个前缀的动态 JSONresponseMessage
这会改变为object
随机地,相同的前缀(responseMessage
) 在某些情况下(动态地)更改为字符串。
响应消息的Json格式对象:
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
responseMessage
Json格式动态变化为string类型:
{
"applicationType":"4",
"responseMessage":"Success"
}
我的问题是因为改造已经内置JSON
解析时,我必须为每个请求分配单个 POJO!但不幸的是,REST-API 是建立在动态之上的JSON
回应。前缀将从字符串随机更改为对象成功(...) and 失败(...)方法!
void doTrackRef(Map<String, String> paramsref2) {
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://192.168.100.44/RestDemo").build();
TrackerRefRequest userref = restAdapter.create(TrackerRefRequest.class);
userref.login(paramsref2,
new Callback<TrackerRefResponse>() {
@Override
public void success(
TrackerRefResponse trackdetailresponse,
Response response) {
Toast.makeText(TrackerActivity.this, "Success",
Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError retrofitError) {
Toast.makeText(TrackerActivity.this, "No internet",
Toast.LENGTH_SHORT).show();
}
});
}
Pojo:
public class TrackerRefResponse {
private String applicationType;
private String responseMessage; //String type
//private ResponseMessage responseMessage; //Object of type ResponseMessage
//Setters and Getters
}
在上面的代码中,POJO TrackerRefResponse.java前缀responseMessage设置为string或类型为responseMessage的对象,因此我们可以使用具有相同名称的ref变量创建POJO(java基础知识:)),所以我正在寻找相同的动态解决方案JSON
在改造中。
我知道这对于具有异步任务的普通 http 客户端来说是非常简单的工作,但这不是 REST-Api 中的最佳实践JSON
解析!看看表现基准测试 https://stackoverflow.com/questions/16902716/comparison-of-android-networking-libraries-okhttp-retrofit-volley/18863395#18863395总是 Volley 或 Retrofit 是最好的选择,但我无法处理动态JSON
!
我知道的可能的解决方案
使用旧的异步任务和 http 客户端解析。 :(
尝试说服 RESTapi 后端开发人员。
创建自定义 Retrofit 客户端:)