프로젝트 중 날씨api로 날씨를 메인에 표시하도록 구현했다. 그런데 그냥 고정된 날씨보다는 사용자가 지역을 검색해서 그 날씨를 보여주는 것이 훨씬 사용자 평의성을 충족 시키킬것 이라는 강사님 말씀에 동의해 준비를 시작했다. 다행히도 해당api 사이트에서는 나라와 도시이름만 따로 넘겨주는 json파일 다운로드로 제공해주었다.
json으로 넘어오는 api만 다뤄보고 파일은 전혀 다른 별개로 생각했던게 삽질의 시발점이 되었다...무조건 서버단에서 해결하고 뷰단으로 넘겨주어야 한다는 생각이 고생을 자초한 것이다. 굳이 서버단에서 가공하지 않을거라면 하지 않아도 되었던 것!
부디 이걸 보는 분들은 그러지 않기를 바란다.
//json 파일 object형식으로 저장
@ResponseBody
@RequestMapping(value = "/jsonCountryList")
public JsonArray jsonCountryList() throws Exception {
FileWriter writer=null;
try {
JsonObject jsonobject = new JsonObject();
JsonParser jsonParser = new JsonParser();
JsonArray memberArray = (JsonArray)jsonParser.parse(new FileReader("json파일 경로"));
JsonObject object = (JsonObject) memberArray.get(1);
System.out.println(" " + object.get("name").toString().replace("\"", ""));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
삽질 끝에 이름을 출력했다. 그때, 불현듯 이렇게 복잡할 필요가 있나? 싶었다. 그래서 다시 검색했다. 'JSON 파일 AJAX 파싱'
그랬다 그냥 jsp에서 ajax로 파싱하면 되는 것이었다.
var cityListUrl = "${contextPath}/resources/js/json/city.list.json";
$.ajax({
type: 'get',
url: cityListUrl,
dataType: 'json',
success: function(data) {
console.log("cityListUrl 성공");
}
});
Why am I crying...😂
json데이터가 20만건이 넘다보니 검색 시 퍼포먼스가 현저히 떨어져서 결국 json파일 DB에 저장하는 JAVA코드를 작성하여 검색 기능을 무사히 구현 하였다 .