【Java】GSONを利用したJavaでのJSONの利用方法

Java

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太郎二郎]
Java
おすすめ書籍
現役エンジニアの気ままブログ

コメント

タイトルとURLをコピーしました