2012-10-31

java Framework/java] Object와 JSONObject


[다운]
Java에서 Json 객체로 변환할 때, json-lib라는 오픈 소스를 이용한다.
http://json-lib.sourceforge.net

json-lib에서 array를 변환할 때는 EZMorph 라이브러리가 필요하다.
http://ezmorph.sourceforge.net

자바스크리브에서 객체를 json 객체로 변환시에는 json.js를 이용한다.
http://json.org

[사용법]
Java에서 Json-lib를 사용하기 위해서 필요한 라이브러리는 다음과 같고, eclipse 사용시 Build Path -> Add Exeternal Archives 에 추가한다.
json-lib-2.1-jdk15.jar
jakarta commons-lang 2.3
 
jakarta commons-beanutils 1.7.0  

jakarta commons-collections 3.2  

jakarta commons-logging 1.1

ezmorph 1.0.4

[예제]
   1. 자바스크립트에서
      object.toJSONString();

   2. 자바에서
      JSONObject oJSONObject = JSONObject.fromObject( object );
      JSONArray = JSONArray.fromObject( retlist );

json형식 ==>{"jsontest":[{"name":"Mr.Cho","location":"Seoul"}]}

import java.util.Iterator;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONParse {
   public static void main(String[] ar) {
      String s = "{\"jsontest\":[{\"name\":\"Mr.Cho\",\"location\":\"Seoul\"}]}";
      JSONObject jo = JSONObject.fromObject(s);
      JSONArray ja = jo.getJSONArray("jsontest");
      for (Iterator i = ja.iterator(); i.hasNext();) {
          JSONObject ob = (JSONObject) i.next();
          String a = ob.getString("name");
          String b = ob.getString("location");
          System.out.println(a);
          System.out.println(b);
      }
   }
}



아래 fromObject를 사용할 수 있어서 json.jar (org.json.JSONObject) 보다는 json-lib.jar (net.sf.json.JSONObject) 이 더 편한 것 같다.
JSONObject.fromObject( obj )
obj에 문자열도 가능하며, 이것이 JSONText 규칙에 맞을 경우 적절한 JSON 객체를 만들어준다.
이때, obj에 있는 문자열은 작은따옴표(')도 문자열로 간주한다.

   Map states = JSONObject.fromObject("{'':'선택안함','1':'신청','2':'완료','3':'보류'}")

위와 같이 하면 꽤 깔쌈하게 Map 객체를 만들 수 있으며, 이를 Velocity에서도 #set 구문을 이용해서 똑같이 쓸 수도 있다.

댓글 없음:

댓글 쓰기