안드로이드에서 Json 오브젝트를 보내고 파싱하는건 어떻게 하나요?

조회수 10430회

서버로부터 메세지를 Json 형식으로 보내고 Json형식으로 받아와 처리하려고 하는데요

아마 서버로부터 아래 형식으로 받아올 것 같은데 { "post": { "username": "someusername", "message": "this is a sweet message", "image": "http://localhost/someimage.jpg", "time": "present time" } }

이정도하려면 JSON에 대한 지식이 얼마나 있어야하죠? JSON을 보내고 받는 법 좀 가르쳐주세요.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    Json 기초는 http://luckyyowu.tistory.com/303 http://lonelycat.tistory.com/374

    여기에 잘 설명 되있는 것 같습니다.

    안드로이드에서 JSON을 파싱하고 받아오는 것은

     String str =
        "[{'username':'someusername','message':'this is a sweet message,'image':'http://localhost/someimage.jpg','time':'present time'},"+
        "{'username':'someusername','message':'this is a sweet message,'image':'http://localhost/someimage.jpg','time':'present time'}]";
    

    이런식으로 String 객체에 보낼 데이터를 저장하고

    JSONArray jarray = new JSONArray(str); JSONArray 객체에 저장합니다.

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

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

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

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

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

    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
    

    이를 적절히 응용해서 보내는것도 하시면 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)