1. ホーム
  2. java

[解決済み] Android/JavaでのJSON配列の反復処理

2022-04-27 22:29:29

質問

私は、オンラインデータベースをダウンロードして同期する必要があるアンドロイドアプリを構築しています。私は、データベースからJSON形式で関連する行を返すPHPページにアプリからクエリを送信しています。

JSON配列を繰り返し処理する最良の方法を教えてください。

オブジェクトの配列を受け取りました。

[{json object},{json object},{json object}]

配列内のJSONObjectにアクセスするために使用できる最も簡単なコードは何ですか?

EDIT: 今思うと、私がループを反復するのに使ったメソッドは。

for (String row: json){
     id = row.getInt("id");
     name = row.getString("name");
     password = row.getString("password");
}

つまり、私は返されたJsonを反復可能な配列に変えることができたのだと思います。どのように私はこれを達成することができます任意のアイデア?

私は私の曖昧さを謝罪しますが、私はウェブ上で見つけた例からこれを動作させたが、その後、それを見つけることができませんでした。

どのように解決するのですか?

私は2種類の方法で行いました。

1.) 地図を作成する

        HashMap<String, String> applicationSettings = new HashMap<String,String>();
        for(int i=0; i<settings.length(); i++){
            String value = settings.getJSONObject(i).getString("value");
            String name = settings.getJSONObject(i).getString("name");
            applicationSettings.put(name, value);
        }

2.) 名前のJSONArrayを作る

    JSONArray names = json.names();
    JSONArray values = json.toJSONArray(names);
    for(int i=0; i<values.length(); i++){
        if (names.getString(i).equals("description")){
            setDescription(values.getString(i));
        }
        else if (names.getString(i).equals("expiryDate")){
            String dateString = values.getString(i);
            setExpiryDate(stringToDateHelper(dateString)); 
        }
        else if (names.getString(i).equals("id")){
            setId(values.getLong(i));
        }
        else if (names.getString(i).equals("offerCode")){
            setOfferCode(values.getString(i));
        }
        else if (names.getString(i).equals("startDate")){
            String dateString = values.getString(i);
            setStartDate(stringToDateHelper(dateString));
        }
        else if (names.getString(i).equals("title")){
            setTitle(values.getString(i));
        }
    }