행복을 위하여.

자바에서 JSON(JavaScript Object Notation) 파싱하는 방법~ 본문

전문가가 되기 위하여/작업 노트

자바에서 JSON(JavaScript Object Notation) 파싱하는 방법~

람다lambda 2011. 2. 15. 16:51

자바에서 JSON 파싱하는 방법은 이미 만들어져 있는 라이브러리를 가져다 쓰면 쉽게 파싱이 가능하다. (JSON에 관한 설명은 JSON 단어 클릭)
http://code.google.com/p/json-simple/

위의 주소로 들어가면 라이브러리를 다운받을 수 있다.

웹서버에 있는 JSON을 string형태로 가져오기 위해
HttpURLConnection클래스로 웹서버 연결을 확립하고 getInputStream함수를 통해 스트링 형태로 JSON을 가져온다.

스트링을 통해 가져온 값을

json simple라이브러리에 있는 함수로 적절히(?) 사용하면 파싱은 쉽게 된다.아~~주 쉽다.ㅡ,.ㅡ

간단한 예제)

String string =   "{name2: 50, name3: "값3", name1: "값1"}";
String name2;
String name3;
STring name1;

JSONObject jsonobj = JSONValue.parse(string);
Iterator iter = json.keySet().iterator();
while(iter.hasNext()){
   String key = (String) iter.next();
   Object value = jsonObj.get(key);
if(key.equals("name2")
    name2 = (String)value;
else if(key.equals("name3")
      name3 = (String)value;
else if(key.equals("name1")
      name1 = (String)value;
}

System.out.println(name2 + name3 + name2);

출력값 : 50,값3,값1


아래와 같은 배열형태도

String string = "[{"date":"2011년 02월 15일 (화)","locatename":"강남"},
{"date":"2011년 02월 16일 (수)","locatename":"신도림"},
{"date":"2011년 02월 17일 (목)","locatename":"목동"},
{"date":"2011년 02월 18일 (금)","locatename":"홍대"},
{"date":"2011년 02월 19일 (토)","locatename":"영등포구청"},
{"date":"2011년 02월 21일 (월)","locatename":"목동"}]"

String date;
String locatename;
for문을 돌려
 get함수로 하나씩 꺼내서 파싱하면된다.

JSONObject jsonobj = JSONValue.parse(string);
if(jsonobj instanceof JSONArray){
  JSONObject jsonObject = null;
  for (int i = 0; i < jsonArray.size(); i++) {
     jsonObject = (JSONObject) jsonArray.get(i);
    Iterator iter = jsonObject.keySet().iterator();
   while (iter.hasNext()) {
    String key = (String) iter.next();
    if (key.equals("date")) { 
date = (String)jsonObject.get(key);
    } else if (key.equals("locatename")) {
         locatename = (String)jsonObject.get(key);
    }  
System.out.println("date :" + date +"locatename"+ locatename);  
}


끝.
Comments