티스토리 뷰
Controller.java
public JSONObject getLineUph(@RequestBody Map<String, Object> param) {
String data = cm.transVOtoString(param);
ArrayList<DashVO> arrUPH = service.getLineUPH(data, "LINE_UPH");
JSONObject jsonObj = new JSONObject();
for(DashVO uph : arrUPH){
jsonObj.put(uph.getPROD_LINE(), uph.getPROD_UPH());
}
return jsonObj;
}
결과
발생원인 : JSONObject는 순서상관없이 할당된 메모리에 Data를 넣습니다. 그래서 DB에서 order by로 정렬하여 넣든 코드내에서 다른 방식으로 정렬해서 넣든 JSONObject로 할당되면 순서가 엉망이 되는 것이죠.
해결방법 :
① gson을 이용합니다. 위키에선 'Gson은 JSON의 자바 오브젝트의 직렬화, 역직렬화를 해주는 오픈 소스 자바 라이브러리이다.' 라 설명하고 있습니다. 말그대로 Sorting(정렬)을 해준다 이해하시면 되겠습니다.
② Data를 넘길때 JSONObject가 아닌 SortedMap을 넘기는 겁니다. 일전에 설명했다시피 json역시 map입니다. 따라서 json이 아닌 map으로 넘겨도 지장없이 바인딩 됩니다.
2번 방식 Controller.java
public SortedMap<String, Object> getLineUph(@RequestBody Map<String, Object> param) {
String data = cm.transVOtoString(param);
ArrayList<DashVO> arrUPH = service.getLineUPH(data, "LINE_UPH");
SortedMap<String, Object> elements = new TreeMap<String, Object>();
for(DashVO uph : arrUPH){
elements.put(uph.getPROD_LINE(), uph.getPROD_UPH());
}
return elements;
}
결과
'트러블슈팅' 카테고리의 다른 글
[Spring]CustomUserDetailsService에서 Service 의존성 주입 (0) | 2020.10.28 |
---|---|
[Webpack]Dynamic Import시 Script Path 설정 (0) | 2020.08.13 |
T4CConnection Error (0) | 2020.06.05 |
JavaScript 비동기 처리 문제 (0) | 2020.03.09 |
java.lang.IllegalArgumentException: XX is ambiguous in Result Maps collection (0) | 2020.03.02 |
댓글
공지사항