【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;
}
}