json으로 받은 공공데이터를 원하는 데이터만 출력할려면 어떻게 해야하나요?
글쓴이: wnsdud9984 / 작성시간: 화, 2015/07/14 - 4:29오후
자바를 이용해서 공공데이터 포널에서 주는 데이터를 편집을 할려고 합니다.
본래 공공데이터 포털에서 주는 데이터가
{
"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();
}Forums:


참조 항목이 잘못된 것 같습니다. 사용하는
참조 항목이 잘못된 것 같습니다.
사용하는 라이브러리가 달라서 메모리 해제 까지는 확인을 못했네요. 아마 다음처럼 하면 될 것 같습니다.
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(); }---------------------------------
제일 왼쪽이 저입니다 :)
댓글 달기