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