Javascript로 이루어진 배열 값을 그대로 형태를 유지하며 저장을 하는경우 아래처럼 데이터가 전송되는 경우가 있다.
//자바스크립트에서 보낼 때 데이터 모습
var list = new Array();
list[0] = {
name:'1번', child : [
{name:'1번의 1번배열값'},
{name:'1번의 2번배열값'}
]
};
list[1] = {
name:'2번', child : [
{name:'2번의 1번배열값'},
{name:'2번의 2번배열값'}
]
};
$.ajax({
url: '보낼주소',
data: list,
type: 'POST',
success: function(result){
console.log(result);
},
error : function(e){
console.log(e);
}
});
@RequestMapping(value = "/받는주소")
@ResponseBody
public String caseSaving(@RequestParam HashMap<Object, Object> param){
try {
param.forEach( (key, value) -> { //출력
System.out.println(key + " = " + value);
});
} catch (Exception e) {
e.printStackTrace();
return "FAIL";
}
return "SUCC";
}
//System.out.prinln으로 출력한 모습 예제
/*
list[0].name = "1번";
list[0].child[0].name = "1번의 1번배열값";
list[0].child[1].name = "1번의 2번배열값";
list[1].name = "2번";
list[1].child[0].name = "2번의 1번배열값";
list[1].child[1].name = "2번의 2번배열값";
*/
배열 값을 그대로 넣고싶은데 이렇게 데이터가 출력되면 어떻게 처리해야 될 지 난감하다.
먼저 보내는 곳에서의 데이터를 바인딩 하는경우 JSON.stringify 함수를 호출해서 바인딩을 해 주어야 한다.
//..생략
$.ajax({
url: '보낼주소',
data: {target:JSON.stringify(list)}, //요 부분이다.
type: 'POST',
success: function(result){
console.log(result);
},
error : function(e){
console.log(e);
}
});
JSON.stringify를 사용하면 일반 문자열 형태로 json형식을 준수하여 데이터가 전송이 된다.
그럼 받는 곳에서는 Json을 파싱해주는 함수를 호출하면 객체로 잘 나뉘게 된다.
<!-- https://mvnrepository.com/artifact/org.json/json -->
<!-- 사용한 Json 파싱 라이브러리 -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
import org.json.JSONArray;
@RequestMapping(value = "/받는주소")
@ResponseBody
public String caseSaving(@RequestParam HashMap<Object, Object> param){
try {
JSONArray array = new JSONArray(param.get("target").toString()); //json 배열
List<Object> list = array.toList(); //Object를 지닌 배열
} catch (Exception e) {
e.printStackTrace();
return "FAIL";
}
return "SUCC";
}
반응형
'Spring framework' 카테고리의 다른 글
스프링 객체 초기화, 스프링 객체 늦은 초기화 (Spring bean init, Spring bean lazy init) (0) | 2019.07.26 |
---|---|
Spring프레임워크 415, 400 오류 (Requestbody, RequestParam) (0) | 2019.07.09 |
전자정부, MongoTemplate 빈 생성 오류 (0) | 2019.06.03 |
Spring에서 (전자정부) Mail 발송하기 (2) | 2019.05.14 |
Mybatis와 일반적인 DB커넥션 그리고 DBMS의 속도에 관해 (0) | 2019.04.29 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글