JavaでオブジェクトをJSON文字列に変換したり、JSON文字列をオブジェクトに変換したりする方法を説明します。
ライブラリのインポート
変換を行うには、Jacksonというライブラリのインポートが必要です。
gradleを使っている場合は、build.gradleのdependenciesに以下を追記します。
dependencies {
implementation 'com.fasterxml.jackson.core:jackson-databind'
}
mavenを使っている場合は、pom.xmlに同様に追記してください。
オブジェクトをJSON文字列に変換する方法
以下のクラスが存在するとします。ゲッターとセッターはLombokを使って自動で追加しています。
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Human {
private String name;
private int age;
}
このとき、オブジェクトをJSON文字列に変換する方法は以下の通りです。
ObjectMapper mapper = new ObjectMapper();
Human human = new Human;
human.setName("山本");
human.setAge(30);
String json = mapper.writeValueAsString(human);
// 以下が出力されます
// {"name":"田中","age":30}
System.out.println(json);
JSON文字列をオブジェクトに変換する
上記の例はオブジェクトからJSON文字列への変換でしたが、逆も可能です。
以下の内容のJSONが存在するとします。
{"name":"山本","age":30}
このJSONをHumanクラスに変換する方法は以下の通りです。
ObjectMapper mapper = new ObjectMapper();
String json = readFile("{上記のJSONのパスをここに記述}");
Human human = mapper.readValue(json, Human.class);
// 以下が出力されます
// 山本
// 30
System.out.println(human.getName());
System.out.println(human.getAge());