힝구힝구
233
2020-12-21 14:59:55 작성 2020-12-21 16:24:33 수정됨
5
262

스프링 @RequestBody 질문드립니다.


안녕하세요, 스프링 초보가 requestbody 관련해서 질문좀 드립니다.

다름아니라, requestbody로 들어오는 데이터 형식이 다음과 같습니다.


이런식으로 JSON 안에 List<Map<String, String>> 으로 들어오는데..

이걸 받을 때 @RequestBody쪽에서 어떻게 받아야 할지를 모르겠습니다 ㅠㅠ..

이대로 실행하면 400에러가 뜹니다. 아예 찾아가질 못해요.

빨간줄 친 부분에서 어떻게 받아와야 되는거같은데... JSONObject<map<String, String>> 이런것도 안먹히고.. 어떻게 해야되는지 좀 여쭤봅니다


++

추가로, 값을 가져와서 cnntInfo에 접근하려면 어떻게 들어가야 하는지도 좀 알려주시면 감사하겠습니다.

현재는 이렇게 해보고있는데... 생각처럼 잘 안되네요..


for(int i = 0; i < cnntInfoList.length(); i++) {
	ParamMap param = new ParamMap();
	custci = cnntInfoList.getJSONObject(i).toString(i);
        ...


0
  • 답변 5

  • 한국은역시자바
    762
    2020-12-21 15:42:33

    List<Map<String, String>> 으로 들어온다고 하셨으니

    List<Map<String, String>> 로 받으시면 되죠

  • 힝구힝구
    233
    2020-12-21 15:50:37

    한국은역시자바


    저 상태에서 Send 눌러서 호출하면 400 에러가 떠서 그렇습니다.

    혹시 Requestbody 쪽에서 뭔가 해줘야되는건지 해서요.

  • Dierslair
    5k
    2020-12-21 15:51:49 작성 2020-12-21 15:53:23 수정됨


    @Data
    public class SomeForm {
        private List<SomeInnerForm> innerForms;
    
        @Data
        public static class SomeInnerForm {
            private String cnntInfo;
        }
    }
    
    @PostMapping(...)
    public ResponseEntity<?> someEntry(@RequestBody SomeForm form) {
        for (SomeForm.SomeInnerForm innerForm : form.getInnerForms()) {
          System.out.println(innerForm.getCnnInfo()); // "11111..", "22222.."
        }
    }

    Spring에서 DTO/VO로 만들어 바인딩하면 지원하는 기능이 많으니 습관을 들이시는게 좋습니다. Validation이 귀찮은데 스프링이 자동으로 지원해주거든요.

  • Dev.kerberos
    942
    2020-12-21 15:54:08

    제이슨형태로 넘길수있게 하고

    Requestbody 이게 아마 제이슨으로못받아서그럴수있으니

    리스판스바디인가 한번 검색해서 보심이..

    제이슨으로도 보낼수있게 어노테이션있던데

  • 힝구힝구
    233
    2020-12-21 16:12:12

    John Suhr

    간단한거라 VO를 안만들고 해보려고했는데..

    한번 이렇게 해보겠습니다. 감사합니다

    Dev.kerberos

    네 ResponseBody 사용했습니다 근데 애초에 값을 못받아와서..하하 ㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.