【Java】JSON文字列をJSONオブジェクト(JSON配列にも)に変換する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Java】JSON文字列をJSONオブジェクト(JSON配列にも)に変換する

2022-9-28 | ,

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とのやり取りとかに使えるかもね!