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を使用します。
関連の記事