Gsonとは
Gsonは、Googleが提供するJavaオブジェクトをJSON表現に変換するためのJavaライブラリです。
また、JSONの文字列を同等のJavaオブジェクトに変換することもできます。
Gsonは、ソースコードのない既存のオブジェクトを含む、任意のJavaオブジェクトを扱うことができます。
Gsonライブラリの取得方法
jarの取得方法
Gsonのjarを取得するには、以下Gsonの開発リポジトリのREADMEにダウンロードリンクがあるので、そちらからダウンロードしてください。
GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back
A Java serialization/deserialization library to convert Java Objects into JSON and back - GitHub - google/gson: A Java serialization/deserialization library to ...
Gradleでの使用方法
build.gradleに以下を記載してください
dependencies {
implementation 'com.google.code.gson:gson:2.10.1'
}
Mavenでの使用方法
pom.xmlに以下を記載してください
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
Gsonの使い方
JavaオブジェクトからJSONへの変換方法
JavaオブジェクトからJSONへ変換する際は、GsonクラスのtoJsonメソッドを使用します。
toJsonの第一引数にJavaオブジェクトを渡すことによりJSONに変換が行われます。
// Gsonのインスタンス化
Gson gson = new Gson();
// JavaオブジェクトのJSON化
gson.toJson(Javaオブジェクト);
JSONからJavaオブジェクトへの変換方法
JSONからJavaオブジェクトへ変換する際は、GsonクラスのfromJsonメソッドを使用します。
toJsonの第一引数にJSON文字列、第2引数に変換後のJavaオブジェクトのクラスを渡すことによりJavaオブジェクトに変換が行われます。
// Gsonのインスタンス化
Gson gson = new Gson();
// JSONのJavaオブジェクト化
gson.fromJson("JSON文字列", 変換後のオブジェクトのクラス);
基本データ型、List、MapのJSONへ変換
基本データ型、List、MapのJSONへ変換例
// Gsonのインスタンス化
Gson gson = new Gson();
// String型のJSON化
System.out.println( "String型:" + gson.toJson("文字列"));
// int型のJSON化
System.out.println( "int型:" + gson.toJson(123));
// boolean型のJSON化
System.out.println( "boolean型:" + gson.toJson(true));
// ListのJSON化
System.out.println( "List:" + gson.toJson(Arrays.asList("テスト","配列")));
// MAPのJSON化
Map<String, String> map = new HashMap<>();
map.put("key", "value");
System.out.println( "Map:" + gson.toJson(map));
基本データ型、List、MapのJSONへ変換の処理結果
String型:"文字列"
int型:123
boolean型:true
List:["テスト","配列"]
Map:{"key":"value"}
JSONを基本データ型、List、Mapへ変換
JSONを基本データ型、List、Mapへ変換例
// Gsonのインスタンス化
Gson gson = new Gson();
// JSONをString型へ変換
System.out.println( "String型:" + gson.fromJson("\"文字列\"", String.class));
// JSONをint型へ変換
System.out.println( "int型:" + gson.fromJson("123" , int.class));
// JSONをboolean型へ変換
System.out.println( "boolean型:" + gson.fromJson("true", boolean.class));
// JSONをListへ変換
System.out.println( "List:" + gson.fromJson("[\"テスト\",\"配列\"]", List.class));
// JSONをMapへ変換
System.out.println( "Map:" + gson.fromJson("{\"key\":\"value\"}", Map.class));
JSONを基本データ型、List、Mapへ変換の処理結果
String型:文字列
int型:123
boolean型:true
List:[テスト, 配列]
Map:{key=value}
Javaオブジェクトを利用した変換例
サンプルで使用するクラス
Groupクラスは、グループ名と所属メンバーを保持するMemberオブジェクトのListを持っています。
public class Group {
public String group_name;
public List<Member> member_list;
public Group(String group_name, List<Member> member_list) {
this.group_name = group_name;
this.member_list = member_list;
}
@Override
public String toString() {
return "group_name:" + group_name + " member_list:" + member_list ;
}
}
public class Member {
public String email;
public String l_name;
public String f_name;
public Member(String email, String l_name, String f_name) {
this.email = email;
this.l_name = l_name;
this.f_name = f_name;
}
@Override
public String toString() {
return "email:" + email + " l_name" + l_name + " f_name" + f_name;
}
}
JavaオブジェクトからJSONへの変換
JavaオブジェクトからJSONへの変換例
// 所属メンバーの設定
List<Member> memberList = new ArrayList<Member>();
memberList.add(new Member("[email protected]","テスト", "太郎"));
memberList.add(new Member("[email protected]","テスト", "太郎二郎"));
// グループの設定
Group group = new Group("team1", memberList);
// Gsonのインスタンス化
Gson gson = new Gson();
// JSON変換し出力
System.out.println(gson.toJson(group));
JavaオブジェクトからJSONへの変換の処理結果
{
"group_name": "team1",
"member_list": [
{
"email": "[email protected]",
"l_name": "テスト",
"f_name": "太郎"
},
{
"email": "[email protected]",
"l_name": "テスト",
"f_name": "太郎二郎"
}
]
}
JSONをJavaオブジェクトへ変換
JSONをJavaオブジェクトへ変換例
String json = "{" +
"\"group_name\": \"team1\"," +
"\"member_list\": [" +
"{" +
"\"email\": \"[email protected]\"," +
"\"l_name\": \"テスト\"," +
"\"f_name\": \"太郎\"" +
"}," +
"{" +
"\"email\": \"[email protected]\"," +
"\"l_name\": \"テスト\"," +
"\"f_name\": \"太郎二郎\"" +
"}" +
"]" +
"}";
// Gsonのインスタンス化
Gson gson = new Gson();
// JSONからJavaオブジェクトに変換し出力
System.out.println(gson.fromJson(json, Group.class));
JSONをJavaオブジェクトへ変換の処理結果
group_name:team1 member_list:[email:[email protected] l_nameテスト f_name太郎, email:[email protected] l_nameテスト f_name太郎二郎]
コメント