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


コメント