レトロフィットの効率的なネットワークライブラリを使用してresponseMessage
いますが、object
ランダムに変更される単一のプレフィックスを含む動的JSONを処理できません。 同じプレフィックス(responseMessage
)が場合によっては(動的に)文字列に変更されます。
responseMessageのJson形式のオブジェクト:
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
responseMessage
Json形式は動的に文字列型に変更されます。
{
"applicationType":"4",
"responseMessage":"Success"
}
私の問題は、レトロフィットにはJSON
解析が組み込まれているため、リクエストごとに1つの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の文字列またはオブジェクトに設定されているため、同じ名前のref変数を使用してPOJOを作成できます(java basics :))。したがってJSON
、Retrofitで動的な同じソリューションを探しています。これは、非同期タスクを使用する通常のhttpクライアントでは非常に簡単な作業ですが、REST-ApiJSON
解析のベストプラクティスではありません。パフォーマンスを見てベンチマーク常にボレーまたはレトロフィットが最良の選択ですが、動的に処理できませんJSON
。
私が知っている可能な解決策
httpクライアントの解析で古いasycタスクを使用します。:(
RESTapiバックエンド開発者を説得してみてください。
カスタムRetrofitクライアントを作成します:)