こんにちは!しーま(@s59shima)です。
いつもブログをご覧いただきありがとうございます。
この記事では、こんな疑問を持った人に向けて記事を書きました。

もっと簡単にJSONデータを操作できる方法はある!?
自力でコードを書いてみたけど、なかなか上手くいかなかった方、外部ライブラリの実際の使い方を知りたい方 におすすめです。
JSONObject の活用
外部ライブラリの選択肢として以下の2つあります。
- net.sf.json.JSONObject
- org.json.JSONObject
【net.sf.json.JSONObject】を使用する場合、他にも複数の外部ライブラリが必要になります。
なので、今回は【org.json.JSONObject】を使用することにします。
使用方法はとても簡単です。
外部ライブラリをダウンロードし、対象のJavaプロジェクトにクラスパスを設定するだけです!
それでは、さっそくやっていきましょう!
JSONObject を使用する前に
開発環境はEclipseを使用します。
まずはEclipseでのクラスパス設定方法から始めますね。

Eclipseの環境構築については下記も参考にどうぞ!
■対象のJavaプロジェクト(添付画像では「JavaSample」)を右クリックします。

■メニューより一番下の「プロパティー」をクリックします。

■プロパティ画面が表示されたら左メニューより「Javaのビルド・パス」をクリックします。
次に [ライブラリ]タブ ⇒ [クラスパス]を選択 ⇒ [外部JARの追加]をクリックします。

■org.json.JSONObjectクラスが含まれるjarファイル(json-XXXXXXXX.jar)を指定します。

■クラスパスに「json-XXXXXXXX.jar」が追加されたことを確認したら、「適用して閉じる」をクリックします。

参照ライブラリに追加したjarファイルが表示されたら、設定は完了になります。

実際に「json-20190722.jar」の中身を確認してみましょう。(※補足)

23個のクラスファイルが存在していることがわかります。
本記事ではその中から「JSONObject.class」「JSONArray.class」を主に解説していきます。
JSON形式のデータ操作

JSONデータの作成
JSONObjectを使用してJSON形式のデータを作成していきましょう。
JSONObjectのインスタンスを生成し、データを追加していきましょう。
サンプルソースコードは以下になります。
import org.json.JSONObject;
public class Test {
public static void main(String[] args) {
JSONObject json = new JSONObject();
json.put( "from", "shima" );
json.put( "age", 30 );
json.put( "male", true );
String[] code = {"java", "javascript", "php"};
json.put( "programming", code );
System.out.println( json );
}
}
実行結果は以下のようになります。JSON形式のデータが作成されていることが分かります。
{"from":"shima","programming":["java","javascript","php"],"age":30,"male":true}
String型配列の部分を JSONArray に変更して使用することも可能です。
String[] code = {"java", "javascript", "php"};
を
JSONArray array = new JSONArray();
に変更した場合です。サンプルのソースコードはこちらになります。
import org.json.JSONArray;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) {
JSONObject json = new JSONObject();
json.put( "from", "shima" );
json.put( "age", 30 );
json.put( "male", true );
JSONArray array = new JSONArray();
array.put("java");
array.put("javascript");
array.put("php");
json.put( "programming", array );
System.out.println( json );
}
}
実行結果は以下の通りになります。
{"from":"shima","programming":["java","javascript","php"],"age":30,"male":true}
JSONArray を使用した場合、実行結果も同じになりますね。
JSONデータの取得
次はデータの取得方法についてみていきましょう。
import org.json.JSONArray;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) {
JSONObject json = getJsonData();
String from = json.getString( "from" );
int age = json.getInt( "age" );
boolean male = json.getBoolean( "male" );
JSONArray programming = json.getJSONArray( "programming" );
System.out.println( from + " " + age + " " + male + " " + programming );
}
static JSONObject getJsonData () {
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
json.put( "from", "shima" );
json.put( "age", 30 );
json.put( "male", true );
array.put("java");
array.put("javascript");
array.put("php");
json.put( "programming", array );
return json;
}
}
JSON形式のデータを取得する場合、8~11行目あたりで「getXXX()」という形で取得できることがわかります。
実行結果は以下の通りになります。
shima 30 true ["java","javascript","php"]
JSON形式のファイル操作
ファイルの作成
上記のソースコードをカスタマイズして、JSON形式のファイルを作成してみましょう。
サンプルソースコードは以下になります。
import java.io.BufferedWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) {
JSONObject json = new JSONObject();
json.put( "from", "shima" );
json.put( "age", 30 );
json.put( "male", true );
String[] code = {"java", "javascript", "php"};
json.put( "programming", code );
String fileName = "sample.json";
try ( BufferedWriter writer = Files.newBufferedWriter ( Paths.get( fileName ) ) ) {
json.write( writer );
} catch ( Exception e ) {
System.err.println( e.getMessage() );
}
}
}
プログラム実行後、sample.jsonというファイルが作成されます。

ファイルの中身を確認してみましょう。
{"from":"shima","programming":["java","javascript","php"],"age":30,"male":true}
ファイルの読込
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.json.JSONObject;
public class Test {
public static void main ( String[] args ) throws FileNotFoundException, IOException {
File file = new File( "sample.json" );
try ( BufferedReader br = new BufferedReader ( new FileReader( file ) ) ) {
String text;
while ( ( text = br.readLine() ) != null ) {
JSONObject object = new JSONObject( text );
System.out.println ( object );
}
}
}
}
実行結果は以下の通りになります。
{"from":"shima","proguraming":["java","javascript","php"],"age":30,"male":true}
本記事のまとめ
今回は、JSON形式のデータ・ファイル操作について解説しました。
最後まで読んでいただきありがとうございます(*^-^*)
本記事の内容をまとめると以下の通りです。
JSONを扱える外部ライブラリは2つ
- net.sf.json.JSONObject
- org.json.JSONObject
各ファイルの操作方法を紹介
本ブログで紹介する各ファイル操作(読み込み・書き込み)は下記5つ。
- JSONファイルの読み書き
本記事はココ!
おすすめ記事
「Javaプログラミングをもう一度本格的に勉強したいっ!」という方へ
逆に、「Javaプログラミング以外を本格的に勉強したいっ!」という方へ