Ⅰ. はじめに
JavaでJSONを扱う方法です
最近人気のGoogleが開発しているライブラリ GSON を利用します。
C#の場合はJSON.NETを利用すれば、クラスを作らなくてもJSONをdynamicに利用したり、LINQ to Objects ができますが、GSONはクラスが必須です。
※2018/03/24追記
GSONでもクラスが不要な書き方がサポートされていました。
この記事で利用するサンプルのJSON
[ {"id": 1, "name": "name001", "age": 20}, {"id": 2, "name": "name002", "age": 21}, {"id": 3, "name": "name003", "age": 22} ]
Ⅱ. 使い方(クラスを作る場合)
1. JSON を Javaのクラスに変換する
手動での変換が面倒な場合は以下のようなWebサイトを利用します。
http://www.jsonschema2pojo.org/
2. Main.java
String strJson = "[{\"id\": 1, \"name\": \"name001\", \"age\": 20},{\"id\": 2, \"name\": \"name002\", \"age\": 21},{\"id\": 3, \"name\": \"name003\", \"age\": 22}]"; Gson gson = new Gson(); User[] users = gson.fromJson(strJson, User[].class); for(User user : users) { System.out.println(user.name); }
3. 実行結果
name001 name002 name003
Ⅲ. 使い方(クラスを作らない場合)
1. Main.java
import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; public class Main { public static void main(String[] args){ String strJson = "[{\"id\": 1, \"name\": \"name001\", \"age\": 20},{\"id\": 2, \"name\": \"name002\", \"age\": 21},{\"id\": 3, \"name\": \"name003\", \"age\": 22}]"; JsonParser parser = new JsonParser(); JsonArray objs = parser.parse(strJson).getAsJsonArray(); for(JsonElement obj : objs) { System.out.println(obj.getAsJsonObject().get("name").getAsString()); } } }
3. 実行結果
name001 name002 name003