sitelink1 | http://blog.naver.com/pajamasi/220554335879 |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
JAVA JSON 활용법에 대해서 다음 단계 입니다. 순차적으로 하나하나 알아 보도록 하겠습니다.
앞에서 생성한 아주 간단한 JSON DATA 가 있습니다.
{"국가":"대한민국","이름":"홍길동","나이":20,"성별":true}
서버로 부터 위와 같은 문자열 데이터(JSON)을 받았다고 합시다. 그럼 이걸 어떻게 처리 해야 할까요??
SIMPLE JSON 안에는 이를 파싱하기 위한 클래스 또한 준비 되어 있기 때문에 우리는 매우 간단하게
처리 할 수 있습니다.
-
import org.json.simple.JSONObject;
-
import org.json.simple.parser.JSONParser;
-
import org.json.simple.parser.ParseException;
-
-
public class Main {
-
-
public static void main(String[] args)
-
{
-
// json data 준비
-
JSONObject json_data = new JSONObject();
-
-
// 데이터 추가
-
json_data.put("이름","홍길동");
-
json_data.put("나이", new Integer(20));
-
json_data.put("성별", new Boolean(true));
-
json_data.put("국가", "대한민국");
-
-
// json 문자열로 변환
-
String json = json_data.toJSONString();
-
-
// 출력
-
System.out.println(json);
-
-
/** 결과 : {"국가":"대한민국","이름":"홍길동","나이":20,"성별":true} */
-
-
-
// 파싱하기
-
-
// 파싱 객체 생성
-
JSONParser parser = new JSONParser();
-
-
try
-
{
-
//파싱할 문자열 지정 후 json object로 형변환
-
JSONObject obj = (JSONObject)parser.parse(json);
-
-
// 몇개의 오브젝트가 들어있는가?
-
System.out.println("오브젝트의 갯수 : "+obj.size());
-
-
-
// 파싱하기
-
int age = ((Long)obj.get("나이")).intValue(); // simple json 의 경우 long 으로 리턴, long 으로 받 은 다음 int로 변환
-
boolean sex = (Boolean)obj.get("성별");
-
-
User u = new User(name,age,sex,nation);
-
-
System.out.println(u);
-
-
}
-
catch (ParseException e)
-
{
-
e.printStackTrace();
-
}
-
-
}// main method end
-
-
}// main class end
-
-
class User
-
{
-
String name; // 이름
-
int age; // 나
-
boolean sex; // true남자 / false 여
-
String nation; // 국
-
-
public User(String name, int age , boolean sex, String nation) // 생성자
-
{
-
this.name = name;
-
this.age = age;
-
this.sex = sex;
-
this.nation = nation;
-
}
-
-
@Override
-
public String toString()
-
{
-
String str = this.name+" "+this.age+ " "+this.sex+" "+this.nation;
-
return str;
-
}
-
}
간단하게 앞서 생성한 json 데이터를 가지고 User이라는 클래스를 통하여 객체를 생성하는 샘플 입니다.
여기서 주의할 점은 simple json 의 경우 int 형 데이터를 long 로 돌려주기 때문에
(long)obj.get("나이"); 를 한것을 먼저 묶어 줍니다. ((long)obj.get("나이"))
이 상태에서 뒤에 .을 찍고 intValue(); 해 주어야 int 형으로 파싱이 가능 합니다.
엄청 간단한 json 데이터 입니다. 이렇게 쓰이는 것은 거의 없겠지요?? 그렇기 때문에 이후에는 좀더 복잡한 json
데이터를 파싱하는것을 해보도록 하겠습니다.