【Java】JSON ~JSONライブラリ:Jacksonを用いた場合~

はじめに

 * 以下の記事で、Jacksonが早いとあったので、Jacksonを試してみる
http://d.hatena.ne.jp/arn/20120128/p1

設定手順

 [1] Jacksonのライブラリを、以下のサイトから3つのjarをダウンロード
http://wiki.fasterxml.com/JacksonDownload
  1-1)jackson-core-X.X.X.jar
  1-2)jackson-annotations-X.X.X.jar
  1-3)jackson-databind-X.X.X.jar

  (X.X.X : Version。今回は、「2.2.3」を用いた)

 [2] ダウンロードしたJARファイルをインポートする

 (例えば、Eclipseの場合、プロジェクトを右クリックし、
  [Propaties]-[Java Build Paht]-[Libraries]-[Add External JARs]で
  上記のJARファイルを追加する)

サンプル

SampleJsonWithJackson.java

import java.util.ArrayList;

import com.fasterxml.jackson.databind.ObjectMapper;

public class SampleJsonWithJackson {
   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);
      
      ObjectMapper mapper = new ObjectMapper();
      
      // Bean -> JSON
      String json = mapper.writeValueAsString(person);
      System.out.println("JSON: " + json);
      
      // JSON -> Bean
      Person restored = mapper.readValue(json, Person.class);
        System.out.println("Name : " + restored.getName());
        System.out.println("Age : " + restored.getAge());
        for (String skill : restored.getSkills()) {
           System.out.println("Skill : " + skill);
        }
   }
}

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;
    }   
}

出力結果

* 何か表示がもっさりしてるのだが...
JSON: {"name":"Mike","age":28,"skills":["C","C#","Java"]}
Name : Mike
Age : 28
Skill : C
Skill : C#
Skill : Java