JavaでJSON文字列をJSONオブジェクト(JSON配列にも)に変換したい!
概要
今回の記事では、JavaでJSON文字列をJSONオブジェクト(JSON配列にも)に変換する手順を掲載する。
仕様書
環境
- OpenJDK version 1.8.0_302 (Java 8)
手順書
今回は下記のような配列を含むJSON文字列をJSONオブジェクトとJSON配列に変換してみる。
{
"status": "200",
"last_updated_at": "2002-04-01",
"employees": [
{
"id": "1",
"name": "ジョバンニ",
"joined_at": "2001-04-01"
},
{
"id": "2",
"name": "カムパネルラ",
"joined_at": "2001-04-01"
},
{
"id": "3",
"name": "ザネリ",
"joined_at": "2001-07-07"
},
{
"id": "4",
"name": "マルソ",
"joined_at": "2002-04-01"
}
]
}
JSON文字列をJSONオブジェクト(JSON配列にも)に変換してデバッグとして出力するコードの例。
try
{
// JSON文字列を取得する関数
String json_string = getJsonString();
JSONObject json_obj = new JSONObject(json_string);
String status = json_obj.getString("status");
Log.d("status", status);
String last_updated_at = json_obj.getString("last_updated_at");
Log.d("last_updated_at", last_updated_at);
JSONArray json_array = new JSONArray(json_obj.getString("employees"));
for (int i = 0; i < json_array.length(); i++)
{
JSONObject o = json_array.getJSONObject(i);
String id = o.getString("id");
Log.d("id", id);
String name = o.getString("name");
Log.d("name", name);
String joined_at = o.getString("joined_at");
Log.d("joined_at", joined_at);
}
}
catch(Exception e)
{
System.out.println(e);
Log.d("Exception", e.toString());
}
JSONObject
のコンストラクタにJSON文字列を渡す。書式に問題があると例外が発生する。
JSONObject json_obj = new JSONObject(json_string);
getString
関数の引数にキーとなる文字列を渡すと戻り値に値が文字列として返ってくる。
String status = json_obj.getString("status");
JSON配列は、JSONArrayのコンストラクタに引数として渡す。
JSONArray json_array = new JSONArray(json_obj.getString("employees"));
getJSONObject
関数にインデックスを引数で渡すと戻り値としてJSONオブジェクトが返ってくる。for
などを使ってループしながら処理をする。
JSONObject o = json_array.getJSONObject(i);
まとめ(感想文)
WEB APIとのやり取りとかに使えるかもね!