この章では、Java言語でJSONを使用する方法を紹介します。

ライブラリの選択

JavaにはJSON解析の組み込み機能がないため、JSONを使用するにはサードパーティ製ライブラリを利用する必要があります。

以下は、よく使われるJSON解析ライブラリのいくつかです。

  • Gson: Googleが開発したJSONライブラリで、機能は非常に充実しています。
  • FastJson: Alibabaが開発したJSONライブラリで、性能は非常に優れています。
  • Jackson: コミュニティが非常に活発で、更新速度も速いです。

以下のチュートリアルは FastJson に基づいて説明します。

環境設定

Mavenで構築したプロジェクトでは、pom.xmlファイルに以下の依存関係を追加するだけです。

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>

エンコードとデコード

エンコード

Java変数からJSON形式へのエンコード手順は以下の通りです。

例

public void testJson() { JSONObject object = new JSONObject(); //string object.put("string","string"); //int object.put("int",2); //boolean object.put("boolean",true); //array List<Integer> integers = Arrays.asList(1,2,3); object.put("list",integers); //null object.put("null",null); ​ System.out.println(object); }

上記の例では、まずJSONオブジェクトを作成し、次に文字列、整数、ブール値、配列を順に追加し、最後に文字列として出力します。

出力結果は以下の通りです。

{"boolean":true,"string":"string","list":[1,2,3],"int":2}

デコード

JSONオブジェクトからJava変数へのデコード手順は以下の通りです。

例

public void testJson2() { ​ JSONObject object = JSONObject .parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}"); //string String s = object.getString("string"); System.out.println(s); //int int i = object.getIntValue("int"); System.out.println(i); //boolean boolean b = object.getBooleanValue("boolean"); System.out.println(b); //list List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class); integers.forEach(System.out::println); //null System.out.println(object.getString("null")); ​ }

上記の例では、まずJSON形式の文字列からJSONオブジェクトを構築し、その後文字列、整数、ブール値、配列を順に読み取り、最後にそれぞれ出力します。出力結果は以下の通りです。

string
2
true
1
2
3
null

JSONオブジェクトと文字列の相互変換

メソッド機能
JSON.parseObject()文字列からJSONオブジェクトを解析する
JSON.parseArray()文字列からJSON配列を解析する
JSON.toJSONString(obj/array)JSONオブジェクトまたはJSON配列を文字列に変換する

例

//文字列からJSONオブジェクトを解析する JSONObject obj = JSON.parseObject("{\"サンプル\":\"サンプル\"}"); //文字列からJSON配列を解析する JSONArray arr = JSON.parseArray("[\"サンプル\",\"サンプル\"]\n"); //JSONオブジェクトを文字列に変換する String objStr = JSON.toJSONString(obj); //JSON配列を文字列に変換する String arrStr = JSON.toJSONString(arr);

関連チュートリアル