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