JSON(JavaScript Object Notation)は、軽量で読みやすいデータ交換フォーマットとして広く使われています。Javaでは、JSONを簡単に扱えるライブラリがいくつか提供されています。この記事では、JavaでJSONを解析する基本的な方法を、初心者向けにわかりやすく解説します。
1. JSONを扱うライブラリの選択
Javaでは、以下のようなライブラリを使用してJSONを解析できます。
- Jackson:高速で柔軟性が高い。
- Gson:シンプルで初心者に向いている。
- org.json:軽量なAPIで簡単な操作が可能。
- Json-B(Java EE標準):最新のJava API。
今回は初心者におすすめの Jackson と Gson を中心に解説します。
2. Jacksonを使ったJSON解析
(1) ライブラリのインストール
JacksonライブラリをMavenプロジェクトに追加します。
1 |
<dependency><br> <groupId>com.fasterxml.jackson.core</groupId><br> <artifactId>jackson-databind</artifactId><br> <version>2.15.2</version><br></dependency><br> |
(2) JSON文字列をオブジェクトに変換する
次に、JSON文字列をJavaオブジェクトに変換する基本例を見てみましょう。
例: JSONをJavaオブジェクトに変換
1 |
import com.fasterxml.jackson.databind.ObjectMapper;<br><br>public class JsonToJavaExample {<br> public static void main(String[] args) {<br> String json = "{ \"name\": \"山田太郎\", \"age\": 30, \"email\": \"taro@example.com\" }";<br><br> try {<br> ObjectMapper mapper = new ObjectMapper();<br><br> // JSONをJavaオブジェクトに変換<br> Person person = mapper.readValue(json, Person.class);<br><br> System.out.println("名前: " + person.getName());<br> System.out.println("年齢: " + person.getAge());<br> System.out.println("メール: " + person.getEmail());<br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br>}<br><br>// データモデルクラス<br>class Person {<br> private String name;<br> private int age;<br> private String email;<br><br> // ゲッターとセッター<br> public String getName() {<br> return name;<br> }<br> public void setName(String name) {<br> this.name = name;<br> }<br> public int getAge() {<br> return age;<br> }<br> public void setAge(int age) {<br> this.age = age;<br> }<br> public String getEmail() {<br> return email;<br> }<br> public void setEmail(String email) {<br> this.email = email;<br> }<br>}<br> |
(3) オブジェクトをJSON文字列に変換する
逆に、JavaオブジェクトをJSON文字列に変換することも簡単です。
例: JavaオブジェクトをJSONに変換
1 |
try {<br> ObjectMapper mapper = new ObjectMapper();<br><br> Person person = new Person();<br> person.setName("田中一郎");<br> person.setAge(25);<br> person.setEmail("ichiro@example.com");<br><br> // JavaオブジェクトをJSON文字列に変換<br> String json = mapper.writeValueAsString(person);<br> System.out.println(json);<br>} catch (Exception e) {<br> e.printStackTrace();<br>}<br> |
3. Gsonを使ったJSON解析
(1) ライブラリのインストール
GsonライブラリをMavenプロジェクトに追加します。
1 |
<dependency><br> <groupId>com.google.code.gson</groupId><br> <artifactId>gson</artifactId><br> <version>2.10.1</version><br></dependency><br> |
(2) JSON文字列をオブジェクトに変換する
Gsonを使った解析の基本例です。
例: JSONをJavaオブジェクトに変換
1 |
import com.google.gson.Gson;<br><br>public class GsonExample {<br> public static void main(String[] args) {<br> String json = "{ \"name\": \"佐藤花子\", \"age\": 28, \"email\": \"hanako@example.com\" }";<br><br> Gson gson = new Gson();<br><br> // JSONをJavaオブジェクトに変換<br> Person person = gson.fromJson(json, Person.class);<br><br> System.out.println("名前: " + person.getName());<br> System.out.println("年齢: " + person.getAge());<br> System.out.println("メール: " + person.getEmail());<br> }<br>}<br> |
(3) オブジェクトをJSON文字列に変換する
GsonでオブジェクトをJSONに変換する方法です。
例: JavaオブジェクトをJSONに変換
1 |
Gson gson = new Gson();<br><br>Person person = new Person();<br>person.setName("高橋英樹");<br>person.setAge(40);<br>person.setEmail("hideki@example.com");<br><br>// オブジェクトをJSONに変換<br>String json = gson.toJson(person);<br>System.out.println(json);<br> |
4. JSON配列の解析
JSON配列も簡単に扱えます。
例: JSON配列を解析する
1 |
String jsonArray = "[{\"name\": \"山田\", \"age\": 30}, {\"name\": \"佐藤\", \"age\": 25}]";<br><br>// Jacksonの場合<br>ObjectMapper mapper = new ObjectMapper();<br>List<Person> people = mapper.readValue(jsonArray, new TypeReference<List<Person>>() {});<br>people.forEach(person -> System.out.println(person.getName()));<br><br>// Gsonの場合<br>Type listType = new TypeToken<List<Person>>() {}.getType();<br>List<Person> people = new Gson().fromJson(jsonArray, listType);<br>people.forEach(person -> System.out.println(person.getName()));<br> |
5. 実践的な応用例
以下のコードは、APIからJSONデータを取得し、解析する例です。
例: HTTP通信で取得したJSONを解析
1 |
import java.io.InputStreamReader;<br>import java.net.HttpURLConnection;<br>import java.net.URL;<br>import com.fasterxml.jackson.databind.ObjectMapper;<br><br>public class ApiJsonExample {<br> public static void main(String[] args) {<br> String apiUrl = "https://api.example.com/data";<br><br> try {<br> URL url = new URL(apiUrl);<br> HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br> conn.setRequestMethod("GET");<br><br> if (conn.getResponseCode() == 200) {<br> InputStreamReader reader = new InputStreamReader(conn.getInputStream());<br> ObjectMapper mapper = new ObjectMapper();<br><br> Person person = mapper.readValue(reader, Person.class);<br> System.out.println("名前: " + person.getName());<br> } else {<br> System.out.println("APIエラー: " + conn.getResponseCode());<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br>}<br> |
6. 学習を深めるために
JSON解析は、多くのJavaアプリケーションで重要なスキルです。「絶対にJavaプログラマーになりたい人へ」を参考に学びを深め、実践力を高めるなら「サイゼントアカデミー」を活用することをおすすめします。
まとめ
JavaでのJSON解析は、JacksonやGsonを使うことで簡単に行えます。今回紹介した手法を活用して、さまざまなデータを効率的に操作できるようになりましょう。
- Jackson:高速で柔軟な操作が可能。
- Gson:シンプルで扱いやすい。
- 配列やAPIからのJSON解析も応用可能。
これらの技術を活用して、Javaプログラマーとしてのスキルを一段と高めてください!
コメント