Java JSON 처리 라이브러리 Jackson JSON Processor #2 : Map, List <--> JSON String 상호변환

JSON 문자열을 Map 이나 List Object 로 변환하는 것이랑

JSON 문자열을 xml 다루듯이 트래버싱 하는것,

Map 이나 List Object 를 JSON 문자열로 변환하는것  요래 정리를 해 보았다.

뭐 요정도만 알면 대충 할 수 있는건 다 할 수 있을듯하다. 뭐 필요하면 더 그때가서 더 찾아보면 되긋지~
package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// 테스트 데이터 : 맵에 string 2개랑 list 하나가 들어가 있는 형태
		List<String> list = new ArrayList<String>();
		list.add("list1");
		list.add("list2");
		list.add("list3");

		Map<String, Object> d = new HashMap<String, Object>();
		d.put("list", list);
		d.put("a", "va");
		d.put("b", "vb");
		////////////////////////////////////////////////
		
		
		
		ObjectMapper om = new ObjectMapper();
		
		// Map or List Object 를 JSON 문자열로 변환
		String jsonStr = om.writeValueAsString(d);
		System.out.println("object to json : " + jsonStr);

		
		// JSON 문자열을 Map or List Object 로 변환
		Map<String, Object> m = om.readValue(jsonStr, new TypeReference<Map<String, Object>>(){});
		System.out.println("json to object : " + m);
		
		
		// JSON 문자열을 xml 다루는것과 비슷하게 트리로 맨들어서 트래버싱하기(Tree Model)
		JsonNode root = om.readTree(jsonStr);
		
		// 단일값 가져오기
		System.out.println("b의 값 : " + root.path("b").getValueAsText());
		
		// 배열에 있는 값들 가져오기
		if( root.path("list").isArray() ){
			Iterator<jsonnode> it = root.path("list").iterator();
			
			// 요래 해도 됨
			// Iterator<jsonnode> it = root.path("list").getElements()
			while(it.hasNext()){
				System.out.println(it.next().getTextValue());
			}
		}
		
		// 이외 getXXXValue() 시리즈, findParent(), findValue() 등등 유용한 함수 많음~
	}
}

Test.java