JSONIC encode/decodeのサンプル
最近、仕事でJSONICを使ってエンコード・デコードする機会があったので、備忘録として記載しておく。
package jsonTest; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.arnx.jsonic.JSON; public class JsonicDecodeTest { public static void main(String[] args){ // Mapを作成 Map<String, BigDecimal> decimalMap = new HashMap<String, BigDecimal>(); decimalMap.put("b", BigDecimal.valueOf(2)); decimalMap.put("c", BigDecimal.valueOf(3)); decimalMap.put("a", BigDecimal.valueOf(1)); // Map → JSON String jsonDecimalMap = JSON.encode(decimalMap); // 出力 System.out.println("■-- Map encode --■"); System.out.println(jsonDecimalMap); // JSON → Map Map<String, BigDecimal> decodeDecimalMap = JSON.decode(jsonDecimalMap); System.out.println("■-- Map Decode --■"); for(Map.Entry<String, BigDecimal> entry :decodeDecimalMap.entrySet()){ System.out.println("key:" + entry.getKey() + ", value:" + entry.getValue() + ", Class(value):" + entry.getValue().getClass()); } // クラスを作成 JsonicDecodeTest jdTest = new JsonicDecodeTest(); TestObject testObj = jdTest.new TestObject(); testObj.setStr("test"); // 値を設定 ListstrList = new ArrayList (); for(int i = 0; i < 3; i++){ strList.add(String.valueOf(i)); } testObj.setStrList(strList); List longList = new ArrayList (); for(int i = 0; i < 3; i++){ longList.add(Long.valueOf(i)); } testObj.setLongList(longList); testObj.setMap(decimalMap); // クラス → JSON System.out.println("■-- Class encode --■"); String testObjJosn = JSON.encode(testObj); System.out.println(testObjJosn); // JSON → クラス System.out.println("■-- Class decode --■"); TestObject decodeTestObj = JSON.decode(testObjJosn, TestObject.class); System.out.println("str:" + decodeTestObj.getStr()); for(String str : decodeTestObj.getStrList()){ System.out.println("strList:" + str); } for(Long longValue : decodeTestObj.getLongList()){ System.out.println("longList:" + longValue); } for(Map.Entry<String, BigDecimal> entry : decodeTestObj.getMap().entrySet()){ System.out.println("map key:" + entry.getKey() + ", value:" + entry.getValue()); } } private class TestObject{ private String str; private List strList; private List longList; private Map<String, BigDecimal> map; public String getStr() { return str; } public void setStr(String str) { this.str = str; } public List getStrList() { return strList; } public void setStrList(List strList) { this.strList = strList; } public List getLongList() { return longList; } public void setLongList(List longList) { this.longList = longList; } public Map<String, BigDecimal> getMap() { return map; } public void setMap(Map<String, BigDecimal> map) { this.map = map; } } }
実行結果はこんな感じ。
■-- Map encode --■ {"b":2,"c":3,"a":1} ■-- Map Decode --■ key:b, value:2, Class(value):class java.math.BigDecimal key:c, value:3, Class(value):class java.math.BigDecimal key:a, value:1, Class(value):class java.math.BigDecimal ■-- Class encode --■ {"longList":[0,1,2],"map":{"b":2,"c":3,"a":1},"str":"test","strList":["0","1","2"]} ■-- Class decode --■ str:test strList:0 strList:1 strList:2 longList:0 longList:1 longList:2 map key:b, value:2 map key:c, value:3 map key:a, value:1