【Java】Gsonを用いてJSONをオブジェクトに変換

概要

JavaでJSONを扱う際にオブジェクトに入れるという方法があると思います。
いくつか方法がありますがGsonを用いて変換します

実装

JSONファイル

読み込むJSONファイル

{
	"name": "taro",
	"age": 20,
	"others": {
		"country": "Japan",
		"address": "TOKYO"
	} 
}

Gson読み込み

今回はGradleプロジェクトで読み込みます。
下記よりバージョンを選択し、「build.gradle」に追加します。
https://mvnrepository.com/artifact/com.google.code.gson/gson

dependencies {
	implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.1'
}

Java

package com.example.demo;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import com.google.gson.Gson;

public class DemoApplication {

	public static void main(String[] args) {
		Path path = Paths.get("./src/main/java/com/example/demo/Practice.json");
		
		Gson gson = new Gson();
		String content = null;
		try {
			content = Files.readString(path);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Bean bean = gson.fromJson(content, Bean.class);
		System.out.print(bean.getOtherBean().getAddress());
	}
}

以下Beanクラス

package com.example.demo;

public class Bean {
	private String name;
	private int age;
	private OtherBean others;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public OtherBean getOtherBean() {
		return others;
	}

	public void setOtherBean(OtherBean otherBean) {
		this.others = otherBean;
	}
}

package com.example.demo;

public class OtherBean {
	private String country;
	private String address;

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

実行するとコンソール上に「TOKYO」と出力されます。

説明

「gson.fromJson」でオブジェクトに変換しています。
実施する前にJSONファイルは「Files.readString」で文字列に変換しています。

JSONファイルには「others」でさらに階層が深くなっている箇所があります。
「others」配下の値もオブジェクトに変換できるようそれようの「OtherBean」を作成しています。

その中の「address」を表示しています。

Gsonを利用すれば、オブジェクトからJSONへ変換することもできるようです。

参考文献

gson/UserGuide.md at master · google/gson
A Java serialization/deserialization library to convert Java Objects into JSON and back - gson/UserGuide.md at master · google/gson
タイトルとURLをコピーしました