개조 효율적인 네트워킹 라이브러리를 사용하고 있지만 무작위로 responseMessage
변경되는 단일 접두사 를 포함하는 Dynamic JSON을 처리 할 수 없으며 object
, responseMessage
경우에 따라 (동적으로) 동일한 접두사 ( )가 String으로 변경됩니다.
responseMessage의 JSON 형식 객체 :
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
responseMessage
JSON 형식은 문자열 형식으로 동적으로 변경됩니다.
{
"applicationType":"4",
"responseMessage":"Success"
}
내 문제는 개조에 내장 JSON
구문 분석 기능이 있기 때문에 요청 당 단일 POJO를 할당해야한다는 것입니다! 그러나 REST-API는 안타깝게도 동적 JSON
응답을 기반으로 합니다. 접두사는 success (...) 및 failure (...) 메서드 에서 문자열에서 객체로 임의로 변경됩니다 !
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는 responseMessage 유형의 문자열 또는 객체로 설정되어 있으므로 동일한 이름 (java basics :))의 ref 변수로 POJO를 만들 수 있으므로 JSON
Retrofit에서 dynamic 에 대한 동일한 솔루션을 찾고 있습니다. 비동기 작업을 사용하는 일반 http 클라이언트에서는 이것이 매우 쉬운 작업이라는 것을 알고 있지만 REST-Api JSON
구문 분석 에서는 모범 사례가 아닙니다 ! 성능 벤치 마크를 보면 항상 Volley 또는 Retrofit이 최선의 선택이지만 동적 핸들링에 실패했습니다 JSON
!
내가 아는 가능한 해결책
http 클라이언트 구문 분석과 함께 이전 asyc 작업을 사용하십시오. :(
RESTapi 백엔드 개발자를 설득하십시오.
사용자 지정 Retrofit 클라이언트 만들기 :)