json으로 받은 공공데이터를 원하는 데이터만 출력할려면 어떻게 해야하나요?

wnsdud9984의 이미지

자바를 이용해서 공공데이터 포널에서 주는 데이터를 편집을 할려고 합니다.

본래 공공데이터 포털에서 주는 데이터가

{
    "response": {
        "header": {
            "resultCode": "00",
            "resultMsg": "NORMAL SERVICE."
        },
        "body": {
            "items": {
                "item": [
                    {
                        실제 데이터
                    }
                ]
            },
            "numOfRows": 1,
            "pageNo": 1,
            "totalCount": 244
        }
    }
}

위에처럼 올때

다른거 다 빼어버리고

"item":[
    {
        실제 데이터
    }
]

처럼 만들고 싶습니다.

그런데 가장 밖았의 "response"만 지워집니다.

지적 부탁드립니다.

try{
	JSONObject json = new JSONObject(result);
	json = json.getJSONObject("response");
	result = json.toString();
	JSONObject header = json.getJSONObject("header");
	String code, msg;
	code = header.getString("resultCode");
	msg = header.getString("resultMsg");
	if(code.equals("00") && msg.equals("NORMAL SERVICE")){
		JSONObject body = json.getJSONObject("body");
		body = body.getJSONObject("items");
		JSONArray ary = new JSONArray();
		ary = body.getJSONArray("item");
 
		ArrayList<drugItem> aList = new ArrayList<drugItem>();
		for(int i = 0 ; i < ary.length(); i++){
			JSONObject tmp = ary.getJSONObject(i);
			drugItem tItem = new drugItem();
 
			tItem.dutyName = tmp.getString("dutyName");
			tItem.dutyAddr = tmp.getString("dutyAddr");
			tItem.wgs84Lat = tmp.getDouble("wgs84Lat");
			tItem.wgs84Lon = tmp.getDouble("wgs84Lon");
			tItem.hpid = tmp.getString("hpid");
 
			aList.add(tItem);
		}
		JSONArray newAry = new JSONArray();
		JSONObject newObj = new JSONObject();
 
		for(int i=0; i< aList.size(); i++){
			JSONObject tmp = new JSONObject();
 
			drugItem tTmp = aList.get(i);
			tmp.put("dutyName", tTmp.dutyName);	//약국 이름
			tmp.put("dutyAddr", tTmp.dutyAddr);	//약국 주소
			tmp.put("wgs84Lat", tTmp.wgs84Lat);	//위도
			tmp.put("wgs84Lon", tTmp.wgs84Lon);	//경도
			tmp.put("hpid", tTmp.hpid);		//ID값
 
			newAry.put(tmp);
		}
 
		newObj.put("data", newAry);
		result = newObj.toString();
	}
} catch (JSONException e) {
	e.printStackTrace();
}
pchero의 이미지

참조 항목이 잘못된 것 같습니다.
사용하는 라이브러리가 달라서 메모리 해제 까지는 확인을 못했네요. 아마 다음처럼 하면 될 것 같습니다.

try{
        JSONObject json = new JSONObject(result);
        //json = json.getJSONObject("response");
        JSONObject j_resp = json.getJSONObject("response");
        result = json.toString(); // ???
        JSONObject header = j_resp.getJSONObject("header");
        String code, msg;
        code = header.getString("resultCode");
        msg = header.getString("resultMsg");
        if(code.equals("00") && msg.equals("NORMAL SERVICE")){
                JSONObject body = j_resp.getJSONObject("body");
                //body = body.getJSONObject("items");
                JSONObject j_items = body.getJSONObject("items");
                JSONArray ary = new JSONArray();
                //ary = body.getJSONArray("item");
                ary = j_items.getJSONArray("item");
 
                ArrayList<drugItem> aList = new ArrayList<drugItem>();
                for(int i = 0 ; i < ary.length(); i++){
                        JSONObject tmp = ary.getJSONObject(i);
                        drugItem tItem = new drugItem();
 
                        tItem.dutyName = tmp.getString("dutyName");
                        tItem.dutyAddr = tmp.getString("dutyAddr");
                        tItem.wgs84Lat = tmp.getDouble("wgs84Lat");
                        tItem.wgs84Lon = tmp.getDouble("wgs84Lon");
                        tItem.hpid = tmp.getString("hpid");
 
                        aList.add(tItem);
                }
                JSONArray newAry = new JSONArray();
                JSONObject newObj = new JSONObject();
 
                for(int i=0; i< aList.size(); i++){
                        JSONObject tmp = new JSONObject();
 
                        drugItem tTmp = aList.get(i);
                        tmp.put("dutyName", tTmp.dutyName);     //약국 이름
                        tmp.put("dutyAddr", tTmp.dutyAddr);     //약국 주소
                        tmp.put("wgs84Lat", tTmp.wgs84Lat);     //위도
                        tmp.put("wgs84Lon", tTmp.wgs84Lon);     //경도
                        tmp.put("hpid", tTmp.hpid);             //ID값
 
                        newAry.put(tmp);
                }
 
                newObj.put("data", newAry);
                result = newObj.toString();
        }
} catch (JSONException e) {
        e.printStackTrace();
}

---------------------------------
제일 왼쪽이 저입니다 :)