본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Spring framework

Javascript 배열(Json)값을 Java 객체로 저장하기

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 6. 17.

 

 

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";
}	

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글