JavaオブジェクトをJSONに変換する方法(Jackson・Gsonの使い方)
このチュートリアルでは、JavaオブジェクトをJSON形式に変換する方法を、定番ライブラリであるJacksonとGsonの2つを使って解説します。
サンプルとして使用するのは、ごく標準的なPOJO(Plain Old Java Object)であるPersonクラスです。Personオブジェクトを作成したら、それぞれのライブラリを使ってJSONへ変換してみましょう。
Person.java
import java.util.List;
import java.util.Map;
public class Person {
String name;
Integer age;
List<String> hobbies;
Map<String, String> languages;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public Map<String, String> getLanguages() {
return languages;
}
public void setLanguages(Map<String, String> languages) {
this.languages = languages;
}
}
Jacksonを使ってJavaオブジェクトをJSONに変換する
JacksonライブラリのObjectMapperクラスを使うと、Javaオブジェクトを簡単にJSONへ変換できます。
ObjectMapperクラスには、JSONをファイルに書き出すメソッドや、JSONを文字列(String)として出力するメソッドなど、用途に応じたさまざまなメソッドが用意されています。
次の例では、ファイルへの書き出しと、pretty print機能による整形済みJSONの表示を両方行っています。
まずは、MavenでJacksonライブラリを取得し、pom.xmlに依存関係として追加します。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
ConvertJavaObjectToJson.java
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ConvertJavaObjectToJson {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
Person person = newPerson();
try {
mapper.writeValue(new File("person.json"), person);
String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
System.out.println(jsonString);
} catch (Exception e) {
e.printStackTrace();
}
}
private static Person newPerson() {
Person person = new Person();
List<String> hobbies = new ArrayList<>();
hobbies.add("Football");
hobbies.add("Cooking");
hobbies.add("Swimming");
Map<String, String> languages = new HashMap<>();
languages.put("French", "Beginner");
languages.put("German", "Intermediate");
languages.put("Spanish", "Advanced");
person.setName("David");
person.setAge(30);
person.setHobbies(hobbies);
person.setLanguages(languages);
return person;
}
}
実行結果:
{
"name" : "David",
"age" : 30,
"hobbies" : [ "Football", "Cooking", "Swimming" ],
"languages" : {
"French" : "Beginner",
"German" : "Intermediate",
"Spanish" : "Advanced"
}
}
同時に、プロジェクトのワークスペース内にperson.jsonファイルも生成されます。
関連記事
- JavaでJSONをパースする方法
- JavaのMapをJSONに変換する方法
- JSONのエンコードとデコードの方法
Gsonを使ってJavaオブジェクトをJSONに変換する
まず、pom.xmlにGsonの依存関係を追加します。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
続いて、以下のコードでJavaオブジェクトをJSON文字列に変換します。
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ConvertJavaObjectToJson {
public static void main(String[] args) {
Gson gson = new Gson();
Person person = newPerson();
String jsonString = gson.toJson(person);
System.out.println(jsonString);
}
private static Person newPerson() {
Person person = new Person();
List<String> hobbies = new ArrayList<>();
hobbies.add("Football");
hobbies.add("Cooking");
hobbies.add("Swimming");
Map<String, String> languages = new HashMap<>();
languages.put("French", "Beginner");
languages.put("German", "Intermediate");
languages.put("Spanish", "Advanced");
person.setName("David");
person.setAge(30);
person.setHobbies(hobbies);
person.setLanguages(languages);
return person;
}
}
実行結果:
{"name":"David","age":30,"hobbies":["Football","Cooking","Swimming"],"languages":{"French":"Beginner","German":"Intermediate","Spanish":"Advanced"}}
GsonのtoJson()メソッドは、デフォルトでは空白や改行を含まないコンパクトなJSONを出力します。整形して表示したい場合は、GsonBuilderのsetPrettyPrinting()を利用してください。
まとめ
本記事では、JacksonとGsonという2つの人気ライブラリを使った、JavaオブジェクトからJSONへの変換方法を紹介しました。
- Jackson:
ObjectMapperクラスを中心とした高機能なライブラリ。ファイル入出力やpretty printなど豊富な機能を備え、Spring Bootでも標準的に採用されています。 - Gson:Google製の軽量ライブラリ。
new Gson().toJson(obj)だけで変換できる手軽さが魅力で、シンプルな用途に最適です。
どちらのライブラリも基本的な変換は数行で実現できます。プロジェクトの要件や既存の依存関係に合わせて、最適な方を選びましょう。
-
JSONテキストをJavaScriptのJSONオブジェクトに変換する方法を解説
JavaScriptでは、JSON.parse()メソッドを使用することで、JSON形式のテキスト文字列をJavaScriptオブジェクトへと変換できます。このメソッドは、APIから取得したデータやサーバーとの通信で受け取ったJSON文字列を、プログラム内で扱いやすいオブジェクトにパースする際に非常に重要な役割を果たします。 以下は、JSONテキストをJavaScriptオブジェクトに変換する具体的なコード例です。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /&
-
JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説
このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ