728x90
반응형
주식의 Symbol값을 사용해서 특정 날짜의 시가, 종가, 고가, 저가, 날짜, 거래량을 사용하는 예제
문제점은 이 망할 json 데이터가 이클립스까지는 출력이되는데 JS로 넘어가는 순간 값이 "empty" : false가 되버리는 것
해결책은 Controller에서 String으로 반환한다음 ajax에서 text로 받고, ajax내부에서 JSON.parse()로 ㅅㄷtext데이터를 JSON 데이터로 다시 묶어주니 해결됬다.
내 소중한 1시간 반 굿바이...
아래는 예제 코드
JS
$.ajax({
// data:objtext,
dataType:'text',
method:"post",
caches:false,
url:"/sDiary/Symbol?" + "Symbol= " + $('#Symbol').val(),
success:function(jobj){
var test = JSON.parse(jobj);
console.log(test[0].High);
},
error:function(error,status,xhr){
alert("검색하신 종목이 존재하지 않습니다 :(");
}
});
Service
public JSONArray getstockChart(String symbol) {
List<sdiaryVO> list = sdiaryMapper.getchart(symbol.strip());
JSONArray jarr = new JSONArray();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
for(int i = 0; i<list.size(); i++) {
sdiaryVO vo = list.get(i);
// 중복값 방지
JSONObject obj = new JSONObject();
obj.put("Open", Float.valueOf(vo.getOpen()));
obj.put("High", Float.valueOf(vo.getHigh()));
obj.put("Low", Float.valueOf(vo.getLow()));
obj.put("Close", Float.valueOf(vo.getClose()));
obj.put("Date", sdf.parse(vo.getDate()).getTime());
jarr.put(obj);
}
return jarr;
Controller
@PostMapping("/Symbol")
@ResponseBody
public String getstockChart(@RequestParam("Symbol") String Symbol){
JSONArray jobj = svc.getstockChart(Symbol);
System.err.println("컨트롤러 " + jobj);
return jobj.toString();
}
728x90
반응형