カレンダーを見たら、今年は13日の金曜日が2回あるらしい。。
 毎年1回ぐらいはあるのかな?
Jacksonを使って、JSONのリストデータをオブジェクトに変換するサンプル
前回は単一データでしたが、今回は複数のデータを取り扱います。
 3件の都道府県リストを持ったJSONデータから、Javaオブジェクトへ変換します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | import java.util.List; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonTest2 {     public static void main(String[] args) {         //データの準備         String json =                  "{"                 + "\"prefList\": ["                 + "{"                 + "    \"code\": \"01\","                 + "    \"name\": \"北海道\","                 + "    \"kana\": \"ほっかいどう\""                 + "},"                 + "{"                 + "    \"code\": \"02\","                 + "    \"name\": \"青森県\","                 + "    \"kana\": \"あおもりけん\""                 + "},"                 + "{"                 + "    \"code\": \"03\","                 + "    \"name\": \"岩手県\","                 + "    \"kana\": \"いわてけん\""                 + "}"                 + "]"                 + "}";         System.out.println("-- 元データ --");         System.out.println(json);         try {             //データの解析             ObjectMapper objectMapper = new ObjectMapper();             PrefList prefList = objectMapper.readValue(json, PrefList.class);             for(int i=0 ; i<prefList.getPrefList().size() ; i++) {                 Pref pref = prefList.getPrefList().get(i);                 //解析結果を出力                 System.out.println("-- 解析結果 --");                 System.out.println(pref.getCode());                 System.out.println(pref.getName());                 System.out.println(pref.getKana());             }         } catch (Exception e) {             e.printStackTrace();         }     } } class PrefList{     private List<Pref> prefList;     public List<Pref> getPrefList() {         return prefList;     }     public void setPrefList(List<Pref> prefList) {         this.prefList = prefList;     } } class Pref{     private String code;     private String name;     private String kana;     public Pref() {     }     public String getCode() {         return code;     }     public void setCode(String code) {         this.code = code;     }     public String getName() {         return name;     }     public void setName(String name) {         this.name = name;     }     public String getKana() {         return kana;     }     public void setKana(String kana) {         this.kana = kana;     } } | 
実行結果
JSONの都道府県データをJavaオブジェクトに変換。
 Javaオブジェクトの出力結果が表示されます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | -- 元データ -- {"prefList": [{    "code": "01",    "name": "北海道",    "kana": "ほっかいどう"},{    "code": "02",    "name": "青森県",    "kana": "あおもりけん"},{    "code": "03",    "name": "岩手県",    "kana": "いわてけん"}]} -- 解析結果 -- 01 北海道 ほっかいどう -- 解析結果 -- 02 青森県 あおもりけん -- 解析結果 -- 03 岩手県 いわてけん | 
サンプルの解説
今回はリストのJSONでした。
 前回同様、変換はObjectMapper#readValue(String, Class)です。
 リストでも特別なことはありません。
 ただし、変換先のオブジェクトのクラスは、2つ用意してあります。
 1つは前回と同じ都道府県のクラスPref。もう1つはリストのPrefList。
 こんな感じで2つ用意しておくと変換することができます。
※このコードを使用するには、別途Jacksonの入手が必要です。
 入手方法などは前回の記事に書いてありますので、こちらからどうぞ。











