3つの可能なバリエーションを持つREST APIを解析しようとしています。最初のものは、私が既に働いているものです。下の写真に示すように、「行」出力の配列があるところです。Androidで3つの可能なバリエーションでREST APIを解析する方法
下図のように、対象となる行もあります。
これらのいずれかは、APIを解析する際に出力される可能性があります。どちらが出力であるかを知るにはif文のようなものが必要ですが、ifの作成方法はわかりませんこの特定の必要性のための声明。ここに私の現在のコードは次のとおりです:
JSONObject parentObject = new JSONObject(finalJson);
JSONObject responseJSON = JSONUtils.jsonObjectFromJSONForKey(parentObject, "response");
if (responseJSON != null) {
JSONObject resultJSON = JSONUtils.jsonObjectFromJSONForKey(responseJSON, "result");
JSONObject contactsJSON = JSONUtils.jsonObjectFromJSONForKey(resultJSON, "Potentials");
JSONArray parentArray = contactsJSON.getJSONArray("row");
List<Photoshoots> photoshootsList = new ArrayList<>();
for (int i = 0; i < parentArray.length(); i++) {
JSONObject mainObject = parentArray.getJSONObject(i);
JSONArray mainArray = mainObject.getJSONArray("FL");
Photoshoots photoshoot = new Photoshoots();
...
私の意見では、これは悪いデザインです。常に同じ構造体(この場合は配列)を返さなければなりません。これはarrayとか1か2の配列か空の配列 –
私はScaryWombatの感想に同意します。結果を1つのオブジェクトに解析します。 「nodata」があるかどうか、または「行」を確認します。あなたが持っている情報が0以上の結果オブジェクトとオプションの説明的なメッセージ/コードで終わってしまうため、そこから残りの部分を処理してより代表的なものに張り付けることができます。つまり、配列や多分文字列です。あなたのビジネスロジックを*実行してください.Btwは、あなたが設計して変更できるAPIですか? –