感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Gsonを使って、JavaオブジェクトをJSON形式に変換するサンプル

スポンサーリンク

JavaでオブジェクトやStringをJSONに変換するサンプル

JavaオブジェクトやintをJSONに変換するライブラリとして、Gsonを使ってみた。
https://code.google.com/p/google-gson/

Gsonは使い方がとてもシンプルで、

Gson gson = new Gson();
System.out.println(gson.toJson(hogeObject));

JavaのオブジェクトをJSONに変換することができる。

ためしに、サーブレットJavaのオブジェクトをJSONに変換してブラウザに表示するサンプルを作ってみた。
まずは、サーブレット(コントローラー)の部分。

package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Person;

import com.google.gson.Gson;

public class ControllerServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest req, HttpServletResponse res)
                    throws IOException, ServletException {
        
        res.setContentType("application/json; charset=utf-8");
        PrintWriter out = res.getWriter();
        
        Gson gson = new Gson();
        Person person = new Person();
        person.setAge(28);
        person.setName("sho322");
        person.setJob("Programmer");
        
        List interests = new ArrayList();
        interests.add("JavaScript");
        interests.add("Chef");
        interests.add("Ruby");
        
        person.setInterest(interests);
        
        out.println("JavaオブジェクトをJSONに変換するサンプル→" + gson.toJson(person));
        
        out.println("intをJSONに変換するサンプル→" + gson.toJson(28));
        
        out.println("StringをJSONに変換するサンプル→" + gson.toJson("hello world!"));   
    }
}

JSONのContent-Typeは「application/json」なので、

res.setContentType("application/json; charset=utf-8");

とする。

で、Personクラスを別に用意して、それに名前や年齢などの値をセットしていく。
で、そのオブジェクトをGsonを使ってJSONに変換しているのが以下の部分。

Gson gson = new Gson();
//省略
out.println("JavaオブジェクトをJSONに変換するサンプル→" + gson.toJson(person));

上記のサンプルに対して、ブラウザからリクエストを投げた結果、以下のようにブラウザに表示される。

JavaオブジェクトをJSONに変換するサンプル→{"name":"sho322","job":"Programmer","age":28,"interest":["JavaScript","Chef","Ruby"]}
intをJSONに変換するサンプル→28
StringをJSONに変換するサンプル→"hello world!"

こんなにも簡単に、GsonがJSON変換をやってくれる。
地味にListもしっかりJSONに変換されていることに注目だ。
↓この部分

"interest":["JavaScript","Chef","Ruby"]

上記のサンプルのweb.xmlはこんな感じ

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    
    <servlet>
        <servlet-name>front</servlet-name>
        <servlet-class>controller.ControllerServlet</servlet-class>
    </servlet>
    
    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>front</servlet-name>
        <url-pattern>/front</url-pattern>
    </servlet-mapping>

</web-app>

Personクラスはこんな感じ

package bean;

import java.util.List;

public class Person {
    private String name;
    private String job;
    private int age;
    private List interest;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public List getInterest() {
        return interest;
    }
    public void setInterest(List interest) {
        this.interest = interest;
    }   
}

以上が、Gsonを使ってJavaオブジェクトをJSONに変換するサンプルでした。次は、このJSONをJavaScriptで読み込んでみたい。

参考文献

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)

感謝のプログラミング

今回で感謝のプログラミングは【467時間目】
10000時間まで、あと【9533時間】