android, JSON 사용하기

PUBLISHED 2011. 10. 5. 11:15
POSTED IN 공장
android 앱에서 JSON/HTTP를 이용한 통신방법이다. 
JSON을 사용하기 전에 먼저 두 가지를 알아야 하는데...

(1) JSONObject (javadoc 보기) 
  : 얘는 순서에 상관없이 키와 값으로만 구성되는 형태이다.
    문자열로 찍어보면 다음과 같이 보인다.
    {"JSON", "Hello, World"}
    여기서 JSON이라는 문자열이 키 값이고, Hello, World가 해당 키의 값이다.

(2) JSONArray (javadoc 보기) 
  : 클래스 명에서 추측할 수 있다시피 순서가 있는 형태의 여러가지 값들이 들어간다.
    여러가지 값이라 함은 Boolean, JSONArray, JSONObject, Number, String, JSONObject.NULL 이다. 
    JSONArray에 JSONObject가 들어간 경우 문자열로 찍어보면 다음과 같이 보인다. 
    [{"JSON", "Hello, World"}, {"JSON1", "Hello, World1"}]
    앞뒤에 각괄호가 있음을 확인하자!

상대방이 보낸것이 JSONObject인지 JSONArray인지는 상호 미리 약속을 해두거나 수신받은 문자열을 분석해서 확인할 수도 있는데 어차피 서버와 클라이언트간에 주고 받는것은 사전에 규약을 만들고 개발을 진행하니 그다지 고민할 필요는 없지 싶다.

JSONObject는 다음과 같이 객체를 만들고, 필요한 값을 마구 붙여넣으면 된다. JSONArray도 마찬가지....

약간의 고난은 서버쪽으로 요청을 보낼때 발생했는데....

인터넷 상에 ContentType과 인코딩 유형을 설정하는 여러가지 방법들이 난무했지만 되는게 없었다.
위와 같이 설정하여 성공! (android에서는 현재 HttpClient 3가 사용되고 있다는걸 어디서 봤는데....)

서버에 요청을 보내면 그에 대한 응답이 올텐데, 응답은 다음과 같이 분석한다.

뭔가 처리 클래스가 있을법도 한데 어쨌든...
(1) 응답 코드를 확인해서 성공인지여부를 확인하고
(2) 스트림을 통해 응답 문자열을 뽑아와서
(3) JSONObject로 변신시켜야 한다.


만약 JSONArray로 서버가 응답을 한다면 다음과 같이 객체로 만들 수 있다.

값을 꺼내오는 방법은 굳이 설명이 필요할까?
값이 키-값 형태로 들어가 있으니, 키를 주면 값이 튀어나올 뿐이다.

'공장' 카테고리의 다른 글

android, Activity Life-Cycle  (0) 2011.10.05
android, AsyncTask  (0) 2011.10.05
android, Matrix를 이용한 Bitmap 조작하기  (0) 2011.10.04