Java で JSON ファイルを読み込み

Siddharth Swami 2023年10月12日
Java で JSON ファイルを読み込み

JavaScript Object Notation は、データを保存および転送するための軽量でテキストベースの言語です。オブジェクトと配列は、JSON ファイルで表される 2つのデータ型です。

このチュートリアルでは、Java で JSON ファイルを読み取る方法を示します。

JSON ファイルを読み取るには、FileReader() 関数を使用して FileReader オブジェクトを開始し、指定された JSON ファイルを読み取ります。

この例では、次のファイルを読み取ります。

{
    "firstName": "Ram",
    "lastName": "Sharma",
    "age": 26
    },

    "phoneNumbers": [
        {
            "type": "home",
            "phone-number": "212 888-2365"
        }
    ] 
}

このファイルの内容を解析するには、json.simple Java ライブラリを使用します。java.simple ライブラリから、org.json.simple.JSONArray クラスと org.json.simple.JSONObject クラスの 2つのクラスをインポートする必要があります。JSONArray は配列の形式で要素を読み取るのに役立ち、JSONObject は JSON テキストに存在するオブジェクトを読み取るのに役立ちます。

以下のコードでは、システムにすでに存在する JSON ファイルを読み取り、そこから、ファイルの名前と名前を出力します。

例えば、

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;

public class JSONsimple {
  public static void main(String[] args) throws Exception {
    // parsing file "JSONExample.json"
    Object ob = new JSONParser().parse(new FileReader("JSONFile.json"));

    // typecasting ob to JSONObject
    JSONObject js = (JSONObject) ob;

    String firstName = (String) js.get("firstName");
    String lastName = (String) js.get("lastName");

    System.out.println("First name is: " + firstName);
    System.out.println("Last name is: " + lastName);
  }
}

出力:

First name is: Ram
Last name is: Sharma

上記の例では、JSON ファイルから読み取った名前と名前を確認できます。

ここでは、Java の org.json.simple.parser.*クラスにある JSONParser().parse() を使用しました。これは、ファイルから JSON テキストを解析します。ここでの js.get() メソッドは、ファイルから名前と名前を取得します。

さまざまなメソッドを使用して JSON コンテンツを解析できますが、メインファイルは FileReader() を使用して読み取られます。

文字列から直接 JSON を解析することもできます。JSON 文字列を解析できる他のメソッドもあります。

以下のコードは、org.json メソッドを示しています。ここでは、ファイル全体をコピーして静的文字列 json に貼り付けます。次に、ファイルから JSON オブジェクトと配列を読み取るために使用されるオブジェクトを作成します。

import org.json.JSONArray;
import org.json.JSONObject;

public class JSON2 {
  static String json = "{\"contacDetails\": {\n" + // JSON text in the file is written here
      "            \"firstName\": \"Ram\",\n"
      + "            \"lastName\": \"Sharma\"\n"
      + "    },\n"
      + "    \"phoneNumbers\": [\n"
      + "            {\n"
      + "                \"type\": \"home\",\n"
      + "                \"phone-number\": \"212 888-2365\",\n"
      + "            }\n"
      + "    ]"
      + "}";
  public static void main(String[] args) {
    // Make a object
    JSONObject ob = new JSONObject(json);

    // getting first and last name
    String firstName = ob.getJSONObject("contacDetails").getString("firstName");
    String lastName = ob.getJSONObject("contacDetails").getString("lastName");
    System.out.println("FirstName " + firstName);
    System.out.println("LastName " + lastName);

    // loop for printing the array as phoneNumber is stored as array.
    JSONArray arr = obj.getJSONArray("phoneNumbers");
    for (int i = 0; i < arr.length(); i++) {
      String post_id = arr.getJSONObject(i).getString("phone-number");
      System.out.println(post_id);
    }
  }
}

出力:

FirstName Ram
LastName Sharma
212 888-2365

関連記事 - Java JSON