개발/javscript

Ajax를 쓰지않고 자바의 list를 json으로 받기

issac 2021. 3. 9. 00:42
		var reviewList = '${rvlist}';
		var positions = fn_javaListToJson(reviewList);

		//json으로 변환
		console.log("fn_javaListToJson : ",positions);
		function fn_javaListToJson(obj){ 
				var resultJson = []; 
				var str = obj.split('[{').join('').split('}]').join(''); //양끝 문자열 제거 
				var rows = str.split('}, {'); //str는 배열 
				for(var i = 0; rows.length > i; i++){ // rows 배열만큼 for돌림 
					var cols = rows[i].split(', '); 
				var rowData = {}; 
				for(var j = 0; cols.length > j; j++){ 
					var colData = cols[j]; 
					colData = colData.trim(); 
					var key = colData.substring(0, colData.indexOf("=")); 
					var val = colData.substring(colData.indexOf("=") +1); 
					rowData[key] = val; } 
				resultJson.push(rowData); 
				} 
				return resultJson; 
			}

DB에서 꺼낼때 분명 5개의 각기다른 List<Map<String, Object>> 가 들어가있어야하는데...

계속해서 같은 데이터만 출력이 되었음. 

아무리찾아봐도 문제가 없어보였는데 결국 자바코드에서 문제가 있었음.

		List<ReviewVO> reviewlist = this.reviewService.getReviewList();
		List<HashMap<String,Object>> rvlist = new ArrayList<HashMap<String,Object>>();
		for(int i=0; i<reviewlist.size(); i++) {
			HashMap<String,Object> rv = new HashMap<String,Object>();//이녀석 문제
			rv.put("title",reviewlist.get(i).getRv_title());
			rv.put("lat",reviewlist.get(i).getRv_lat());
			rv.put("lng",reviewlist.get(i).getRv_lng());
			rvlist.add(rv);
			System.out.println(reviewlist.get(i).getRv_title()+"/"+reviewlist.get(i).getRv_lat()+"/"+reviewlist.get(i).getRv_lng());
		}
		mv.addObject("rvlist",rvlist);
		return mv;

HashMap rv가 for문 밖에 선언되어져있어 새로운 HashMap을 List에 담지 못했다;;;

결국 똑같은 데이터만 주구장창 List에 담기고 있었음;;;

코드는 거짓말하지않아!!!!! 정신차리자.