我正在使用改造高效的网络库,但是无法处理包含单个前缀的Dynamic JSON,该前缀 responseMessage
会object
随机responseMessage
更改,在某些情况下(动态),相同的前缀()会更改为String。
Json格式的responseMessage对象:
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
responseMessage
Json格式会动态更改为字符串类型:
{
"applicationType":"4",
"responseMessage":"Success"
}
我的问题是,因为改造具有内置的JSON
解析功能,所以我必须为每个请求分配单个POJO!但不幸的是,REST-API是基于动态JSON
响应构建的。前缀将在成功(...)和失败(...)方法中从字符串随机更改为对象!
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 basics :)),因此我正在为JSON
Retrofit中的动态寻找相同的解决方案。我知道这在具有异步任务的普通http客户端中是非常容易的工作,但这不是REST-ApiJSON
解析中的最佳实践!始终看性能基准排球或翻新是最好的选择,但是我无法动态处理JSON
!
我知道可能的解决方案
将旧的asyc任务与http客户端解析一起使用。:(
尝试说服RESTapi后端开发人员。
创建自定义的改造客户端:)