人生は、お天気いろいろ

日々の生活やプログラミング等に関するメモ・雑文を記載しています

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");
		
		// 値を設定
		List strList = 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