Java – JSON ファイルの作成とデータの読み込み on Ubuntu No.21

自己投資としてチャレンジしている内容を Blog で公開しています。今回は JSON ファイルの作成(書き込み)と読み込み方法について紹介します。

————————————
▼1. JSON ファイルのデータを読み書きする方法
————————————
JSON.simple を利用した JSON ファイルの作成と、JSON ファイルの読み込み方法についてまとめます。

JSON.simple は、JSONの処理、JSONデータの読み取りと書き込みがマシンのリソースを消費せず高速に実現できる JSON 生成ライブラリーです。 生成された JSON は JSON の仕様 RFC4627 に完全に準拠します。

————————————
▼2. 事前準備
————————————
pom.xml にて json-simple の maven 依存関係を追記します。

        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>

————————————
▼3.  Json ファイルの作成と生成した JSON ファイルを読むコード
————————————
3-1. Json ファイルを作成するために、主に 2 つのオブジェクト JSONObject と JSONArray とを利用します。JSONObject は json オブジェクトを作成するために put() メソッドを利用しフィールドを生成します。JSONArray は json 配列となるデータを作成するために add() メソッドを利用し JSONObject type のオフジェクトを追加します。Json ファイルの読み取り結果を 3 通りの方法で出力しています。
(例)

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

public class ReadWriteJSONv6 {
    protected static final Logger log = LoggerFactory.getLogger(ReadWriteJSONv6.class);

    public static void main(String... args) throws InterruptedException {
        // 1st record
        JSONObject engineerInfo = new JSONObject();
        engineerInfo.put("LastName", "Travase");
        engineerInfo.put("isRegistered", true);

        JSONObject personObject = new JSONObject();
        personObject.put("id", "7");
        personObject.put("person", engineerInfo);

        // 2nd record
        JSONObject engineerInfo2 = new JSONObject();
        engineerInfo2.put("LastName", "Ken");
        engineerInfo2.put("isRegistered", true);

        JSONObject personObject2 = new JSONObject();
        personObject2.put("id", "8");
        personObject2.put("person", engineerInfo2);

        // Add person to list
        JSONArray pList = new JSONArray();
        pList.add(personObject);
        pList.add(personObject2);

        log.info("Create JSON file");
        try (FileWriter file = new FileWriter("/xxxx/test1.json")) {
            file.write(pList.toJSONString());
            file.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }

        log.info("Read the json file");
        JSONParser jsonParser = new JSONParser();

        try (FileReader reader = new FileReader("/xxxx/test1.json")) {
            Object obj = jsonParser.parse(reader);
            JSONArray pListr = (JSONArray) obj;
            log.info("==========================");
            log.info("Print all data");
            log.info("==========================");
            System.out.println(pListr);
            Thread.sleep(500);
            log.info("==========================");
            log.info("Print data 1 by 1");
            log.info("==========================");
            pListr.forEach(pers -> parsePersonObject((JSONObject) pers));
            Thread.sleep(500);
            log.info("==========================");
            log.info("Print data per id");
            log.info("==========================");
            Iterator iter = pListr.iterator();
            while (iter.hasNext()){
                JSONObject json = (JSONObject) iter.next();
                Iterator<String> keys = json.keySet().iterator();
                while (keys.hasNext()){
                    String key = keys.next();
                    System.out.println("KEY; " + key + "  value :" + json.get(key));
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    private static void parsePersonObject(JSONObject person1) {
        JSONObject personObject = (JSONObject) person1.get("person");
        String id = (String) person1.get("id");
        System.out.println(id);
        boolean isRegistered = (boolean) personObject.get("isRegistered");
        System.out.println(isRegistered);
        String lastName = (String) personObject.get("LastName");
        System.out.println(lastName);
    }
}


3-2. 実行結果 (一部) は以下となります。

[main] INFO ReadWriteJSONv6 - Create JSON file
[main] INFO ReadWriteJSONv6 - Read the json file
[main] INFO ReadWriteJSONv6 - ==========================
[main] INFO ReadWriteJSONv6 - Print all data
[main] INFO ReadWriteJSONv6 - ==========================
[{"person":{"isRegistered":true,"LastName":"Travase"},"id":"7"},{"person":{"isRegistered":true,"LastName":"Ken"},"id":"8"}]
[main] INFO ReadWriteJSONv6 - ==========================
[main] INFO ReadWriteJSONv6 - Print data 1 by 1
[main] INFO ReadWriteJSONv6 - ==========================
7
true
Travase
8
true
Ken
[main] INFO ReadWriteJSONv6 - ==========================
[main] INFO ReadWriteJSONv6 - Print data per id
[main] INFO ReadWriteJSONv6 - ==========================
KEY; person  value :{"isRegistered":true,"LastName":"Travase"}
KEY; id  value :7
KEY; person  value :{"isRegistered":true,"LastName":"Ken"}
KEY; id  value :8

————————————
▼4. 参考情報
————————————
json-simple Google Code Archive – Long-term storage for Google Code Project Hosting.

以上です。参考になりましたら幸いです。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です