【Androidでデータやファイルと戯れる】JSONArrayを使ってJSONアレイを組み立てる

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

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

AndroidでJSONを取り扱うにはorg.jsonパッケージを使用します。
今回は、JSONArrayを使ったJSONの生成を行います。

JSONArrayのインスタンス化

JSONArrayはJSONで言うところのアレイ(“[]”)を表現するクラスです。
JSONArrayには複数のコンストラクタが存在しますが、今回は空っぽの状態から始めるため、引数を持たないJSONArray()を使用します。
この時、生成されたJSONArrayインスタンスは”[]”というJSON文字列を表すインスタンスとなります。
    JSONArray jsonArray = new JSONArray();

JSONArrayにデータを配置する

アレイ内には0個以上のvalueを配置することができます。
valueはint・long・double・boolean・String・オブジェクト・アレイを配置することが可能です。
配置するメソッドJSONArray#putは上記の型の違いに応じたオーバーロードが存在しています。
オーバーロードは下記のとおりです。
JSONArray put(boolean value) アレイの末尾にboolean valueを追加する。
JSONArray put(int value) アレイの末尾にint valueを追加する。
JSONArray put(long value) アレイの末尾にlong valueを追加する。
JSONArray put(double value) アレイの末尾にdouble valueを追加する。
JSONArray put(Object value) アレイの末尾にObject valueを追加する。
引数で渡すことができるのはString・Boolean・Integer・Long・Double・NULL・nullやJSONObject・Map(オブジェクト)やJSONArray・List(配列)です。
JSONArray put(int index, boolean value) アレイの末尾にboolean valueを追加する。
JSONArray put(int index, int value) アレイの末尾にint valueを追加する。
JSONArray put(int index, long value) アレイの末尾にlong valueを追加する。
JSONArray put(int index, double value) アレイの末尾にdouble valueを追加する。
JSONArray put(int index, Object value) アレイの末尾にObject valueを追加する。
引数で渡すことができるのはString・Boolean・Integer・Long・Double・NULL・nullやJSONObject・Map(オブジェクト)やJSONArray・List(配列)です。

JSONArrayを使ってJSONを組み立てる

public class JsonArrayActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        JSONArray jsonArray = createJSON();
    }

    private JSONArray createJSON() {
        JSONArray jsonArray = new JSONArray();
        try {
            jsonArray.put(true);
            jsonArray.put(100);
            jsonArray.put(18000305032230531L);
            jsonArray.put(10.5);
            jsonArray.put("String");
            jsonArray.put(createJSONObject(5));
            jsonArray.put(createJSONArray(5));
            jsonArray.put(new HashMap<>());
            jsonArray.put(new ArrayList<>());
            jsonArray.put(10, false);
            jsonArray.put(15, 200);
            jsonArray.put(20, 10000000000000000L);
            jsonArray.put(25, 20.5);
            jsonArray.put(30, createJSONObject(1));
            jsonArray.put(35, createJSONArray(1));
            jsonArray.put(40, new HashMap<>());
            jsonArray.put(45, new ArrayList<>());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonArray;
    }

    private JSONObject createJSONObject(int count) {
        JSONObject jsonObject = new JSONObject();
        try {
            for (int i = 0; i < count; i++) {
                jsonObject.put("JSON_OBJECT_" + i, i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

    private JSONArray createJSONArray(int count) {
        JSONArray jsonArray = new JSONArray();
        try {
            for (int i = 0; i < count; i++) {
                jsonArray.put(i, i);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonArray;
    }
}