【Gson】Javaでjsonを生成する方法

初めに

jsonとは

json(ジェイソン)とはJavaScript Object Notationの略です。その名の通りJavaScriptでデータを扱うのに適しているデータ形式です。

WEB APIなどで使用さているのをよく目にしますね。(書影apiなど)

なぜJavaでjsonを生成する必要があるのか

jsonとは何かを理解していただいたと思います。ではなぜJavaでjsonを生成する必要があるのでしょうか。

もちろん、それには明確な理由がありますそれは『JavaScriptで処理しやすいから』です。特に私はajaxを使用したWEBアプリを作成する際にその効果を感じます。

Javaのオブジェクトをjsonに変換する

Javaでjsonを生成する方法には様々なものがあります。今回はその中でも『Gson』というAPIを使用した方法をご紹介します。

Gsonとは

GsonはGoogleが提供しているJavaのオブジェクトとjsonを相互に変換することができるJavaのライブラリです。

準備

Just a moment...

こちらのサイトからGsonをダウンロードします。

バージョンはお好きなもので構いません。(今回私が使用しているのは2.10.1です)

Javaオブジェクトをjsonに変換する

ここからは実際にJavaのオブジェクトをjsonに変換するコードです。

配列

通常の配列です。もちろんString型以外のプリミティブ型を含むオブジェクトの配列も変換できます。

import com.google.gson.Gson;
public class test{
    public static void main(String[] args) {
        String[] sArray = {"test1","テスト"};
        Gson gson = new Gson();
        String result = gson.toJson(sArray);
        System.out.println(result);
    }
}
[
    "test1",
    "テスト"
]

マップ

HashMapを変換するときちんとkeyとvalueを生成してくれます。

HashMap以外のコレクションAPIもそれぞれの形に合わせて生成してくれます。

import java.util.HashMap;
import com.google.gson.Gson;
public class test{
    public static void main(String[] args) {
        HashMap map = new HashMap<>();
        map.put("key1","value1");
        map.put("キー1","値1");
        Gson gson = new Gson();
        String result = gson.toJson(map);
        System.out.println(result);
    }
}
{
    "key1": "value1",
    "キー1": "値1"
}

Bean

setterとgetterがあるクラスに関しもきちんとkeyとvalueをjsonに変換してくれます。

import com.google.gson.Gson;
public class test{
    public static void main(String[] args) {
        MyBean bean = new MyBean();
        bean.setName("nonnbiri");
        bean.setAddress("Tokyo Japan");
        Gson gson = new Gson();
        String result = gson.toJson(bean);
        System.out.println(result);
    }
}
class MyBean{
    private String name = null;
    private String address = null;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public void setAddress(String address){
        this.address = address;
    }
    public String setAddress(){
        return this.address;
    }
}
{
    "name": "nonnbiri",
    "address": "Tokyo Japan"
}

組み合わせ

ListにBeanやMapを持たせるといったことをしても内部のパラメータを全て変換してくれます。

import java.util.ArrayList;

import com.google.gson.Gson;

public class test{
    public static void main(String[] args) {
        ArrayList list = new ArrayList();

        MyBean bean = new MyBean();
        bean.setName("nonnbiri");
        bean.setAddress("Tokyo Japan");
        list.add(bean);

        bean = new MyBean();
        bean.setName("tarou");
        bean.setAddress("America");
        list.add(bean);

        Gson gson = new Gson();
        String result = gson.toJson(list);

        System.out.println(result);
    }
}
class MyBean{
    // 省略
}
[
    {
        "name": "nonnbiri",
        "address": "Tokyo Japan"
    },
    {
        "name": "tarou",
        "address": "America"
    }
]

コメント

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