Sangil's blog

https://github.com/ChoiSangIl Admin

Spring 컨트롤러에서 Json데이터 받을 때 오류 out of START_ARRAY token DEV / WEB

2020-09-23 posted by sang12


Post형태로 아래와 같은 데이터를 받으려고 하는데... 컨트롤러에서 out of START_ARRAY token 오류가 난다...
[ { "test": 1, "test2": "test"}, { "test": 2, "test2": "test2" } ]

처음에 만들었던 구조는

ResultVo라는 객체안에 
List<TestVo> 와 같은 구조를 넣어주고 ResultVo로 해당 Json 데이터를 받으려고해서 오류가 발생했다
(
TestVo 는 위 json 데이터를 받기위한 Vo)

-오류나던 부분
private void controller(@RequestBody ResultVo> vo) {

}

-수정
private void controller(@RequestBody List<TestVo> vo) {

}

작업을 하다보니 한가지 방법이 더있어서 공유합니다. 2번째 수정한 방법으로 파라미터를 받게되면.  아래와같은 형태의 데이터를 못받게 됩니다.

{  [ { "test": 1, "test2": "test"}, { "test": 2, "test2": "test2" }]  , test3: "test"}

이럴때는 Json 데이터를 아래와같이 변형하여, test1과 test3으로 json을 만들어줍니다

{ test1: { [ { "test": 1, "test2": "test"}, { "test": 2, "test2": "test2" }] } , test3: "test"}

그리고 아래와 같이 Vo를 생성해서 받으면 됩니다. 이때 test1과 test3의 json을 감싸주는 변수의명이 같아야합니다 

Class TestVo{
    List<Test1Vo> test1;
    String test3;
}


REPLY