【Androidでデータやファイルと戯れる】JSONArrayを使ってJSONアレイを組み立てる
JSONとはRFC 4627とRFC 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; } }