Java gsonでJSONを変換するサンプル

JavaのgsonでJSONを変換するサンプルです。
(確認環境:JDK 8)

目次 gsonとは
  gsonの取得方法
JSONからJavaオブジェクトに変換
  JavaオブジェクトからJSONに変換

gsonとは

gsonは、google作成のJSONを処理するライブラリです。
JSONからJavaオブジェクトまたはJavaオブジェクトからJSONに変換します。

以下は、GitHubのgsonのリンクです。
https://github.com/google/gson

gsonの取得方法

1.Mavenで取得する場合

pom.xmlの<dependencies>の間に以下のコードを追加します。

		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.7</version>
		</dependency>

Mavenで取得する手順は、以下を参照願います。
Eclipse Mavenでjarを取得(Java)

2.jarファイルで取得する場合

jarファイルもMavenRepositoryのサイトにあります。
https://mvnrepository.com/artifact/com.google.code.gson/gson

ダウンロード完了後、jarファイルをクラスパスに追加します。
Eclipse jarファイルをクラスパスに設定する方法

JSONからJavaオブジェクトに変換

JSONからJavaオブジェクトに変換するサンプルです。

1.JSONデータ

{
    "syain": [
        {
            "id": "1",
            "name": "suzuki",
            "sikaku": [
                "基本",
                "応用"
            ]
        },
        {
            "id": "2",
            "name": "tanaka",
            "sikaku": [
                "ネットワーク"
            ]
        }
    ]
}

syainはオブジェクトの配列を持っています。sikakuは、文字列の配列です。

2.JSONデータを受けるクラス (Syain.java)

package test1;
import java.util.List;

class Syain {
	private List<SyainData> syain;

	public List<SyainData> getSyain() {
		return syain;
	}
}

データを確認するためgetterがあります。

3.JSONデータを受けるクラス (SyainData.java)

package test1;
import java.util.List;

class SyainData {
	private int id;
	private String name;
	private List<String> sikaku;
	
	public int getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public List<String> getSikaku() {
		return sikaku;
	}
}

データを確認するためgetterがあります。

4.JSONをJavaオブジェクトに変換するクラス (Test1.java)

package test1;
import com.google.gson.Gson;

public class Test1 {
	public static void main(String[] args) {
		String testJson1 =
	"{\"syain\": " + 
	"[{\"id\": \"1\",\"name\": \"suzuki\",\"sikaku\": [\"基本\",\"応用\"]},"+
	"{\"id\": \"2\",\"name\": \"tanaka\",\"sikaku\": [\"ネットワーク\"]}]}";
		
		Gson gson = new Gson();

		Syain s1 = gson.fromJson(testJson1,Syain.class);
		
		System.out.println(s1.getSyain().get(0).getId()); // 1
		System.out.println(s1.getSyain().get(0).getName()); // suzuki
		System.out.println(s1.getSyain().get(0).getSikaku());//[基本, 応用]
		
		System.out.println(s1.getSyain().get(1).getId()); // 2
		System.out.println(s1.getSyain().get(1).getName()); // tanaka
		System.out.println(s1.getSyain().get(1).getSikaku());//[ネットワーク]
	}
}

jsonからJavaオブジェクトへの変換は、fromJsonを使用します。

JavaオブジェクトからJSONに変換

JavaオブジェクトからJSONに変換するサンプルです。

1.Javaのクラス (Syain.java)

package test1;
import java.util.List;

class Syain {
	private List<SyainData> syain;

	public void setSyain(List<SyainData> syain) {
		this.syain = syain;
	}
}

データを作成するためsetterがあります。

2.Javaのクラス (SyainData.java)

package test1;
import java.util.List;

class SyainData {
	private int id;
	private String name;
	private List<String> sikaku;
	
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setSikaku(List<String> sikaku) {
		this.sikaku = sikaku;
	}
}

データを作成するためsetterがあります。

3.JavaオブジェクトをJSONに変換するクラス (Test1.java)

package test1;
import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

public class Test1 {
	public static void main(String[] args) {
		SyainData sd1 = new SyainData();
		sd1.setId(1);
		sd1.setName("suzuki");
		List<String> sikaku1 = new ArrayList<>();
		sikaku1.add("基本");
		sikaku1.add("応用");
		sd1.setSikaku(sikaku1);

		SyainData sd2 = new SyainData();
		sd2.setId(2);
		sd2.setName("tanaka");
		List<String> sikaku2 = new ArrayList<>();
		sikaku2.add("ネットワーク");
		sd2.setSikaku(sikaku2);

		List<SyainData> list = new ArrayList<>();
		list.add(sd1);
		list.add(sd2);
		
		Syain s1 = new Syain();
		s1.setSyain(list);
		
		Gson gson = new Gson();

		String json1 = gson.toJson(s1);

		System.out.println(json1); 
		// {"syain":[{"id":1,"name":"suzuki","sikaku":["基本","応用"]},
		// {"id":2,"name":"tanaka","sikaku":["ネットワーク"]}]}
	}
}

Javaオブジェクトからjsonへの変換は、toJsonを使用します。

関連の記事

Java JacksonでJSONとオブジェクトを変換

△上に戻る