json 형태로 객체를 받는 방법

WAS·2025년 5월 15일
0

JSON

목록 보기
2/2

Content-Type 속성

  • HTTP 요청 또는 응답에서 본문(body)의 데이터가 어떤 형식인지를 명시하는 헤더

쉽게 말해서 클라이언트(브라우저,앱)와 서버가 데이터를 주고 받을 때
서로 어떤 형식의 데이터를 주고 받는지 알 수 있음

많은 종류가 있지만 주로 많이 사용하는 것은

application/json : JSON 데이터

application/x-www-form-urlencoded : 폼 데이터 (key=value&key2=value2)

text/html; charset=UTF-8 : html 응답


application/x-www-form-urlencoded 데이터 보내는 경우

  • 데이터는 반드시 key:value 형태로 보내면 된다
  • 컨트롤러에서는 @RequestParam @HttpServletRequest.getParameter() @ModelAttribute 에서만 받을 수 있다
$.ajax({
  url: "...",
  type: "POST",
  data: { saveTable: "1" }, 
});
@PostMapping("/test")
public String test(@RequestParam String saveTable) {
    ...
}

@PostMapping("/test")
public String test(HttpServletRequest request) {
    request.getParameter("saveTable");
}

application/json 데이터 보내는 경우

  • 반드시 JSON 형식(문자열) 로 보내야 한다
    ex) data: JSON.stringify(객체)

JSON.stringify 가 필요한가?
그 이유는 자바스크립의 객체 {"key":"value"} 를 그대로 보내면 서버에서
JSON 이 아니라 일반 폼 데이터 로 인식할 수도 있기 때문에
JSON.stringify(객체) 를 사용해서 자바스크립트 객체를 JSON 문자열 로 변환한다
그 후 서버는 이 문자열을 JSON으로 파싱해서 사용

참고로 JSON.stringify 로 보냈을 때는 서버에서는 무조건 @RequestBody 로 받아야함
@RequestBody 는 JSON을 자바 객체로 역직렬화 하기 위한 어노테이션

$.ajax({
  url: "/api/test",
  method: "POST",
  contentType: "application/json",
  data: JSON.stringify({ name: "홍길동", age: 25 }) // 반드시 stringify!
});


const wrapped = { // {}안에 키 값 형태로 감싸야함
  saveTable: "1",
  list: regtObj // ← 배열 형태
};

$.ajax({
  url: "/cas/cp/irm/hist/tpnu/saveInputList.do",
  type: "POST",
  contentType: "application/json",
  data: JSON.stringify(wrapped)
});
@PostMapping("/...")
public void method(@RequestBody Map<String, Object> data) {
    // ...
}
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글