【Androidでデータやファイルと戯れる】JSONArrayの内容を操作する

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

JSONとはRFC 4627RFC 7159で規定される構造化された文字列のことです。

AndroidでJSONを取り扱うにはorg.jsonパッケージを使用します。
今回は、JSONArrayの内容を操作します。

JSONArrayを操作するメソッド

JSONArray内のデータを操作するメソッドには様々な種類があります。
これらのメソッドを利用してJSONArrayインスタンス内の構造や状態を確認することができます。
int length() JSONArrayインスタンスに含まれる要素数を返却されます。
boolean isNull(int index) 指定した要素番号(index)に値が設定されていない場合、またはNULLが設定されている場合はtrueが返却されます。
String join(String separator) JSONArrayインスタンスの内容をseparatorで結合した文字列を返却されます。
Object remove(int index) JSONArrayインスタンスから指定した要素番号(index)の値を除去し、除去した値を返却されます。
JSONObject toJSONObject(JSONArray names) JSONArrayインスタンスと引数のnamesを使用して、JSONObjectを作成します。
この時、同一の要素番号の値がkey-valueペア(JSONArrayインスタンスのi番目とnamesのi番目)になります。
String toString() JSONArrayインスタンスの内容をJSON文字列として返却します。
String toString(int indentSpaces) JSONArrayインスタンスの内容を読み易いJSON文字列として返却します。

JSONArrayを操作するメソッドを使用する

public class JsonArrayActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        JSONArray jsonArray = createJSON();
        operationJSONArray(jsonArray);
    }
    
    private void operationJSONArray(JSONArray jsonArray) {
        try {
            Log.d("JSONArray", "length : " + jsonArray.length());
            Log.d("JSONArray", "isNull index(0) : " + jsonArray.isNull(0));
            Log.d("JSONArray", "isNull index(100) : " + jsonArray.isNull(100));
            Log.d("JSONArray", "join : " + jsonArray.join(","));
            Log.d("JSONArray", "remove : " + jsonArray.remove(0));
            JSONArray names = new JSONArray();
            names.put("NAME A");
            names.put("NAME B");
            names.put("NAME C");
            Log.d("JSONArray", "toJSONObject : " + jsonArray.toJSONObject(names));
            Log.d("JSONArray", "toString : " + jsonArray.toString());
            Log.d("JSONArray", "toString indentSpaces(1) : " + jsonArray.toString(1));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}