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

Android 2015.08.20 23:19

share this post

안드로이드 에서 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 추출

     .....

}

Colored by Color Scripter

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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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

 

Colored by Color Scripter

cs

 

 

실행화면

 

 

 

 



출처: http://bitsoul.tistory.com/4 [Happy Programmer~]

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED