하지만 GSON이 다 좋은것만은 아니라고 느껴지는 것이 [~]이런 종류의 내용은 JSON에서 읽기 좋지만 GSON에서는 최악인
것 같다. (실제로 [~]식으로 예제 작성하다가 하루를 날로 바치는 마술을 보았다 -_-;)
GSON으로 배열 형식을 쓰고 싶다면 {"key":[~]}이런식으로 작성하는 것이 바람직하다.
먼저 아래와 같은 JSON이 있다고 치자.
String Json = "{\"computer\":[{\"Product\":\"mouse\",\"Maker\":\"Samsung\",\"Price\":23000},"
+"{\"Product\":\"keyboard\",\"Maker\":\"LG\",\"Price\":12000},"
+"{\"Product\":\"hdd\",\"Maker\":\"westorn digital\",\"Price\":15600}]}";배열인데 이것을 JSON으로 파싱을 하면 다음 예제 처럼 할 수 있다.
public class JSONobj extends Activity implements OnClickListener {
private TextView txt;
private Button btn;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.jsonobj);
txt = (TextView) findViewById(R.id.txt_json);
btn = (Button) findViewById(R.id.btn_json);
btn.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.btn_json:
String Json = "{\"computer\":[{\"Product\":\"mouse\",\"Maker\":\"Samsung\",\"Price\":23000},"
+"{\"Product\":\"keyboard\",\"Maker\":\"LG\",\"Price\":12000},"
+"{\"Product\":\"hdd\",\"Maker\":\"westorn digital\",\"Price\":15600}]}";
try{
String txt1 = "주문 목록\n";
JSONArray ja = new JSONArray(Json);
for(int i =0; i < ja.length(); i++){
JSONObject obj = ja.getJSONObject(i);
txt1 += "제품명:"+obj.getString("Product")
+ ",제조사:"+obj.getString("Maker")
+",가격:"+obj.getInt("Price")+"\n";
}
txt.setText(txt1);
}catch(Exception e){
txt.setText(e.getMessage());
}
break;
}
}}
안드로이드로 짠 소스로 JSONArry에서 반복문을 통해 JSONObject를 통해서 하나하나 꺼낸 형식이다. 이것을 GSON으로 바
꿔보자. GSON을 쓰기 위해서는 google에서 GSON 라이브러리를 가져와서 빌드Path에 집어넣어준다.
기본적으로 사용하는 method는 단 두개 formJson과 toJson이다. 자 그럼 위의 소스를 GSON으로 변환한 것이다. 설명은 주석
으로 대신하겠음. 주의사항이 있다면 Json 내용의 키와 값과 새로 만든 클래스에서 만드는 변수명을 다르게 하면 안된다.
(이것땜에 하루 다보냄)
'Android' 카테고리의 다른 글
Json 2차원 배열 출력하기(http 통신 Gson 이용) (1) | 2011.11.28 |
---|---|
web상에 있는 json 파일을 http통신을 통하여 받아서 출력하기.(Gson 이용) (0) | 2011.11.28 |
안드로이드 패키지 중복 (0) | 2011.11.22 |
MacBook에서 안드로이드 PATH 설정방법 (0) | 2011.11.22 |
Android에서 jsp로 데이터 파라미터 전송하는 방법 (6) | 2011.09.08 |