■ 設定手順
[1] GSONのライブラリを、以下のサイトからダウンロードhttp://code.google.com/p/google-gson/
[2] ダウンロードしたファイル「google-gson-X.X.X-release.zip」を解凍する (X.X.X : Version。今回は、「2.2.4」を用いた) [3] 解凍したフォルダ内部にある以下のJarをインポートする * gson-X.X.X.jar * gson-X.X.X-javadoc.jar * gson-X.X.X-sources.jar (例えば、Eclipseの場合、プロジェクトを右クリックし、 [Propaties]-[Java Build Paht]-[Libraries]-[Add External JARs]で 上記3つのJARファイルを追加する)
■ 使用上の注意
* List をJSON化する際に、匿名内部クラスを利用すると、null になってしまうので注意 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ List<Person> people new ArrayList<Person>() { { add(person1); add(person2); } }; String result = gson.toJson(people); // ★ result = null になってしまう ★ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~匿名内部クラス / 無名内部クラス については、以下の関連記事を参照のこと
https://blogs.yahoo.co.jp/dk521123/37174760.html
■ サンプル
Person.java
* ただのサンプル・オブジェクトimport java.util.List; public class Person { private String name; private int age; private List<String> skills; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public List<String> getSkills() { return this.skills; } public void setSkills(List<String> skills) { this.skills = skills; } }
SampleJsonWithGson.java
import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; import com.google.gson.Gson; public class SampleJsonWithGson { public static void main(String args[]) throws Exception { // データ設定 Person person = new Person(); person.setName("Mike"); person.setAge(28); ArrayList<String> skills = new ArrayList<String>(); skills.add("C"); skills.add("C#"); skills.add("Java"); person.setSkills(skills); // ★本題★ Gson gson = new Gson(); // クラスをJSON(文字列)に変換 String jsonText = gson.toJson(person); System.out.println("JSONに変換(toJson)" + jsonText); // ファイル出力 File file = new File("output.json"); PrintWriter printWriter = new PrintWriter( new BufferedWriter(new FileWriter(file))); printWriter.println(jsonText); printWriter.close(); // ファイルからインスタンスを抽出 FileReader reader = new FileReader("output.json"); Person personFromFile = gson.fromJson(reader, Person.class); reader.close(); System.out.println("Name : " + personFromFile.getName()); System.out.println("Age : " + personFromFile.getAge()); for (String skill : personFromFile.getSkills()) { System.out.println("Skill : " + skill); } } }
出力例
JSONに変換(toJson){"name":"Mike","age":28,"skills":["C","C#","Java"]} Name : Mike Age : 28 Skill : C Skill : C# Skill : Java