この章では、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);