오늘은 어디로 갈까...

json-lib 본문

井底之蛙

json-lib

剛宇 2008. 7. 3. 10:01
Json 사용하기
json-lib는 beans, maps, collections, java arrays와 XML을 JSON으로 바꾸거나, 반대로 JSON을 bean, DynaBean 형식으로 바꾸는 자바 라이브러리이다.


공식사이트 : http://json-lib.sourceforge.net/


Json-lib을 사용하기 위해서는 아래 라이브러리들이 필요하다.


Bean이나나 Map을 Json으로 변환하기
Map2Json

  Map model = new HashMap();
  model.put("key1", "value1");
  model.put("key2", new Integer(2));
  model.put("key3", Boolean.TRUE);
 
  List dataList = new ArrayList();
  Map data = null;
  for (int i = 0; i < 10; i++) {
   data = new HashMap();
   data.put("no", new Integer(i));
   data.put("name", "제 이름은 " + i + "입니다.");
   data.put("age", new Integer((int)(Math.random() * 60)));
   
   dataList.add(data);
   
   data = null;
  }
  model.put("dataList", dataList);
 
  JSONObject jsonObject = JSONObject.fromObject(model);
  System.out.println(jsonObject);


출력결과

{key1=value1, key3=true, key2=2, dataList=[{age=25, no=0, name=제 이름은 0입니다.}, {age=28, no=1, name=제 이름은 1입니다.}, {age=39, no=2, name=제 이름은 2입니다.}, {age=57, no=3, name=제 이름은 3입니다.}, {age=40, no=4, name=제 이름은 4입니다.}, {age=8, no=5, name=제 이름은 5입니다.}, {age=35, no=6, name=제 이름은 6입니다.}, {age=29, no=7, name=제 이름은 7입니다.}, {age=43, no=8, name=제 이름은 8입니다.}, {age=37, no=9, name=제 이름은 9입니다.}]}



Json을 Map으로 변환
 - JSONObject의 getString(), getJSONArray() 메소드들을 이요해서 하나씩 가져올 수도 있지만, 규칙을 지정해서 이용하면 한번에 변환이 가능하다.

Json2Map
  String jsonData = "{\"key1\":\"value1\",\"key3\":true,\"key2\":2,\"dataList\":[{\"age\":25,\"no\":0,\"name\":\"제 이름은 0입니다.\"},{\"age\":28,\"no\":1,\"name\":\"제 이름은 1입니다.\"},{\"age\":39,\"no\":2,\"name\":\"제 이름은 2입니다.\"},{\"age\":57,\"no\":3,\"name\":\"제 이름은 3입니다.\"},{\"age\":40,\"no\":4,\"name\":\"제 이름은 4입니다.\"},{\"age\":8,\"no\":5,\"name\":\"제 이름은 5입니다.\"},{\"age\":35,\"no\":6,\"name\":\"제 이름은 6입니다.\"},{\"age\":29,\"no\":7,\"name\":\"제 이름은 7입니다.\"},{\"age\":43,\"no\":8,\"name\":\"제 이름은 8입니다.\"},{\"age\":37,\"no\":9,\"name\":\"제 이름은 9입니다.\"}]}";
 
  Map classMap = new HashMap();
  classMap.put("dataList", java.util.HashMap.class);
  JSONObject jsonObject = JSONObject.fromObject(jsonData);
 
  Map model = (Map)JSONObject.toBean(jsonObject, java.util.HashMap.class, classMap);
  System.out.println(model);

toBean() 메소드를 이용할 경우, 기본값은 DynaBean형태로 변환한지만, 결과 클래스나, List일 경우 그 클래스를 선언해주면 자동 변환한다.


특정 클래스 타입에 따라 출력을 정의하는 방법
  JsonBeanProcessor beanProcessor = new JsDateJsonBeanProcessor();
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.registerJsonBeanProcessor(java.sql.Date.class, beanProcessor);
JsonBeanProcessor을 상속받아 구현한뒤 JsoncCofig에 등록해주면 된다.