마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

JSONArray를 JSONObject에 넣는법

0 추천
{"survey":{"result":0,"code":"12348","url":"http:\/\/m.naver.com"},"notice":{"result":0,"code":"12349","url":"http:\/\/m.naver.com"},"speedtest":{"ftp_passwd":"password","call_setup_time":10,"call_active_time":10,"call_number":1111,"ftp_port":21,"ftp_id":"userid","ftp_ip":"192.168.0.1"},"version":{"result":-1,"url":""}}

 

이런 JSON형식의 String이 있습니다.

survey, result, speedtest, version을 각각 JSONObject에 넣어서 사용하고싶은데

 

어떻게해야하나요 ?

위의 데이터를 String str이라고 한다면

 

JSONArray arr = new JSONArray(str); 하면 어레이에 들어가고

 

이걸 각각 obj에 어떻게 넣나요 ??
음무 (17,820 포인트) 님이 2014년 4월 2일 질문

1개의 답변

+2 추천
 
채택된 답변

//아래는 제가 사용할때 사용했던 방법입니다. 

import org.json.JSONArray;

import org.json.JSONObject;
 

JSONObject jObject = new JSONObject(str);  //str은 json 문자열

으로 JSONObject 를 만들어주시고 JSONArray에 해당되는 것을 

 JSONArray jArrObject  = jObject.getJSONArray("배열항목"); 로 ~

JSONObject라면 바로 jObject.getString("항목");  으로 얻어내시면 됩니다.

for (int i=0; i<jArrObject .length(); i++) {

              JSONObject actor = jArrObject .getJSONObject(i);
                 name= actor.getString("항목1");
                value= actor.getString("항목2");
                break;
    }
 

 

 

 

 

포스코 (1,490 포인트) 님이 2014년 4월 2일 답변
음무님이 2014년 4월 2일 채택됨
JSONArray arr = new JSONArray(str);
           
            for (int i=0; i<arr.length(); i++) {
                JSONObject obj = arr.getJSONObject(i);
                Log.d("log", "arr index : " + obj);
            }

하니까

JSONException 발생하네요 ㅠㅠ
아마도 아래와 같은 에러일것이고
04-02 08:25:28.560: E/ddd(1516): org.json.JSONException: Value {"ftp_ip":"192.168.0.1","ftp_passwd":"password","call_setup_time":10,"call_active_time":10,"ftp_port":21,"call_number":1111,"ftp_id":"userid"} at speedtest of type org.json.JSONObject cannot be converted to JSONArray


String str="{\"survey\":{\"result\":0,\"code\":\"12348\",\"url\":\"http://m.naver.com\"},\"notice\":{\"result\":0,\"code\":\"12349\",\"url\":\"http://m.naver.com\"},\"speedtest\":{\"ftp_passwd\":\"password\",\"call_setup_time\":10,\"call_active_time\":10,\"call_number\":1111,\"ftp_port\":21,\"ftp_id\":\"userid\",\"ftp_ip\":\"192.168.0.1\"},\"version\":{\"result\":-1,\"url\":\"\"}}";
       
        try
        {
   
            JSONObject jObject = new JSONObject(str);
        
            JSONObject obj  = jObject.getJSONObject("speedtest");
            
            Log.e("ddd", obj.getString("ftp_passwd"));
          
        }
        catch(Exception k)
        {
           
            Log.e("ddd",k.toString());
        }

이렇게 하시면 값이 나올겁니다.

json 배열은 returnValue":[{"항목1_1":"값1_1","항목1_2":"값1_2"},{"항목2_1":"값2_1","항목2_2":"값2_2"},{"항목3_1":"값3_1","항목3_2":"값3_2"},{"항목4_1":"값4_1","항목4_2":"값4_2"}]
이런 형태일때 JSONArray 로 접근하시면 됩니다
...