我使用的是改造后的高效网络库,但是我无法处理动态 JSON,它包含一个前缀 responseMessage
,随机地改为 object
,同样的前缀(responseMessage
)在某些情况下(动态地)改为 String。
Json format 响应消息对象:
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
Json 格式动态更改为类型 string:
{
"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();
}
});
}
波乔:
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 或 object 类型的 response seMessage,因此我们可以创建具有相同名称的 ref 变量的 POJO (java 基础知识:) ,所以我正在寻找相同的解决方案,为动态 JSON
中的龟裂。
我知道在具有异步任务的普通 http 客户端中这是非常容易的工作,但是在 REST-Api JSON
解析中这不是最佳实践!看看性能 基准 总是排球或改装是最好的选择,但我失败的处理动态 JSON
!
我知道可能的解决办法
在 http 客户端解析中使用旧的 asyc 任务
尝试说服 RESTapi 后端开发人员。
创建客户端:)