JSONObject jo_header = new JSONObject();
JSONObject jo_detail = new JSONObject();
JSONArray ja = new JSONArray();
try {
jo_header.put("JOB_DT", "20120116");
jo_header.put("JOB_TYPE", "W");
jo_header.put("CLIENT", "127.0.0.1");
jo_header.put("WCC", "DONG");
jo_header.put("REC_CNT", "1");
jo_header.put("STATUS", "");
jo_header.put("MESSAGE", "");
jo_detail.put("DONG_NM", et.getText());
jo_detail.put("INPUT_DT", "20120116132412");
ja.put(0, jo_detail);
jo_header.put("DETAIL", ja);
str = jo_header.toString();
Log.d("test"," SEND DATA " + str);
} catch (JSONException e) {
e.printStackTrace();
}
JSON 포맷으로 스트링을 만들어 넘기려고 합니다. 그러나,
put 순서대로 출력되지 않네요. 아래와 같이 보이려고 하는데요.
{"JOB_DT":"20120116","JOB_TYPE":"W","CLIENT":"127.0.0.1","WCC":"DONG","REC_CNT":"1","STATUS":"","MESSAGE":"",
"DETAIL":[{"DONG_NM":"신길동","INPUT_DT":"20120116132412"}]}
자꾸 순서가 뒤죽박죽이 되어 나옵니다. 특별한 규칙이 있는 것도 아니고 put 순서를 바꿔봐도
{"WCC":"DONG","MESSAGE":"","CLIENT":"127.0.0.1",
"DETAIL":[{"INPUT_DT":"20120116132412","DONG_NM":""}],"JOB_DT":"20120116","STATUS":"","JOB_TYPE":"W","REC_CNT":"1"}
요런 순서로 나오네요..
얼핏 java에서는 JSONObject 는 순서대로 안되고,
JSONArray는 순서대로 나온다고 하네요.
자료구조 상 차이 같긴 한데,
문제는 JSONArray로 하면 순서대로는 되었지만,
{ : , : , : , : , : [{:}] } 같은 형식이 아니라
[{:},{:},{:},{:[{:}]}] 이렇게 중괄호가 배열식으로 나와버리는 바람에 서버측에서 제대로 파싱을 못하네요..
맨위 소스에서 제가 뭔가 잘못한부분이 있는가 싶기두 하구요.
아니라면 JSONObject 로 어떻게 제 마음대로 순서를 정해 스트링을 만들 수 있을까요?..
으,.. ㅠㅠㅠ 죽겠습니다. 살려주십쇼!! 고수님들!
칠리님 소중한 답변 감사드립니다^-^;;
원래 xml파서를 통해 구현되어있는건데..
이번엔 다른 시스템들이 전부 JSON형식이라.. 통합적으로 편하게 하려고 JSON 쓰거든요 ㅠ
일반 JAVA에서 쓰는 JSON-lib 은 put 순서대로 보내지더라구요.. 근데 왜 안드로이드에서만 이럴까 싶구요.....
혹시나 해서 JSON-lib jar 파일을 추가해서 레퍼런스 라이브러리로 쓰려니깐. 잘 안되네요..
import도 잘 안되서 net.sf.json.JSONObject 로 억지로 써보기도 했지만, 역시나
java.lang.VerifyError: net.sf.json.JSONObject 이런 정체모를 오류나 뜨고 말았습니다..
아아아아아아아아아아.... 뭔가 이 답답함...
아무튼 좋은 답변 감사드립니다....^^
사실 순서는 상관없이 프로세스는 잘 돌아가지만, 저 퀄럼들이 많아지면, 나중에 다른 곳에서 오는 값들과 비교할때 어려워져서요 어떻게 안될까요.. ㅠ