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();
}

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.