[Error/Spring] out of START_ARRAY token

2025. 6. 15. 21:05Backend/Spring

 

 

데이터를 가져올 때, 데이터에 맞는 객체 클래스를 생성하고 해당 객체를 이용하여 데이터를 가져올 수 있습니다.

 

하지만 가끔 아래와 같은 에러가 발생하곤 합니다.

~~~ : Can not deserialize instance of ---- out of START_ARRAY token at ----

 

😂원인

 

저의 친구 GPT와 Google 을 통해서 검색해보니, 해당 원인은 다음과 같습니다.

 

1) 데이터를 보고, 데이터의 값으로 List를 기대합니다.

2) 하지만, 단일 객체 또는 필드에서 단일 객체의 형태로 매핑하려고 하게 됩니다.

 

이럴 때, 위와 같은 에러가 발생하게 됩니다.

 

예를 들어, 이름(name)과 색(color)을 필드로 가지는 Fruit라는 클래스가 있다고 가정해보겠습니다.

 

객체에서는 아래와 같이 List 형태로 받고 싶어서, List<Fruit>를 기대했는데

[ 
  {
    "name": "apple",
    "color: "red"
  },
  {
    "name": "banana",
    "color": "yellow"
  }
]

 

실제 코드 상에는 Fruit로 작성이 되어 있던 겁니다!

 

📝해결

 

이 문제를 해결하기 위해서는 List 형태로 바꿔주시면 되는데요!!

아래처럼, 파라미터나 DTO(또는 VO) 클래스 필드 타입을 수정해주시면 됩니다~!!

@PostMapping("/test")
public void sample(@RequestBody Fruit fruit) {
}

@PostMapping("/test")
public void sample(@RequestBody List<Fruit> fruit) {
}