안드로이드 에서 JSON 읽어오기 (JSON parser)

 

안드로이드에 국한된 주제는 아니지만, JSON 과 XML 은 워낙 많이 사용하는 자료형태이기 때문에,  간단하게 사용하는 코드를 작성해 보았습니다.

 

JSON 과 XML 의 표현 방식 차이에 대해 비교 해놓은 것은 아래 링크를 참조하세요

http://json.org/example

 

1. 우선은 parsing 할 JSON 텍스트 준비.
   : 아래와 같이 기본적인 스트링으로 해도 되고
   : 안드로이드의 string 리소스에 넣어두어도 됩니다.

1
2
3
4
 String str =
    "[{'name':'배트맨','age':43,'address':'고담'},"+
    "{'name':'슈퍼맨','age':36,'address':'뉴욕'},"+
    "{'name':'앤트맨','age':25,'address':'LA'}]";
cs

 

2. 위의 준비된 텍스르토 JSONArray 객체 생성.

1
JSONArray jarray = new JSONArray(str);   // JSONArray 생성
cs

 

3. JSONArray 객체의 getJSONObject(i) 메소드로 child object 들을 차례대로 추출
   이때 child 의 개수는 length() 메소드로 체크 가능.
   추출된 child object 들은 JSONObject 로 받습니다.

1
2
3
4
for(int i=0; i < jarray.length(); i++){
    JSONObject jObject = jarray.getJSONObject(i);  // JSONObject 추출
     .....
}
cs

 

4. 각 JSONObject 객체에서 get***("~~") 메소드를 통해 '값' 을 받습니다.
    이때 get*** 메소드의 매개변수는 '키'값 입니다.

String address = jObject.getString("address");
String name = jObject.getString("name");
int age = jObject.getInt("age");

 

MainActivity 내용은 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class MainActivity extends ActionBarActivity {
 
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        tv = (TextView)findViewById(R.id.tvResult1);
        Button b = (Button) findViewById(R.id.button);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                doJSONParser();
            }
        });
    } // end onCreate()
 
    void doJSONParser(){
        StringBuffer sb = new StringBuffer();
 
        String str =
                "[{'name':'배트맨','age':43,'address':'고담'},"+
                "{'name':'슈퍼맨','age':36,'address':'뉴욕'},"+
                "{'name':'앤트맨','age':25,'address':'LA'}]";
 
        try {
            JSONArray jarray = new JSONArray(str);   // JSONArray 생성
            for(int i=0; i < jarray.length(); i++){
                JSONObject jObject = jarray.getJSONObject(i);  // JSONObject 추출
                String address = jObject.getString("address");
                String name = jObject.getString("name");
                int age = jObject.getInt("age");
 
                sb.append(
                        "주소:" + address +
                        "이름:" + name +
                        "나이:" + age + "\n"
                    );
            }
            tv.setText(sb.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
    } // end doJSONParser()
}  // end class
 
cs

 

 

실행화면

 

 

 


WRITTEN BY
비트쏘울

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 만약 a.json 이라는 파일을 가지고 있을 경우에도 정보를 가져올 수 있을까요?
secret