Передать Список объектов от angular до весны - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу передать список объектов из angular в пружину с остальными api, но я не смог сопоставить массив, который я передаю службе angular, с массивом, который я передаю контроллеру весной, и я получаю эту ошибку:

ERROR Invalid JSON input: Cannot deserialize instance of `com.backend.guestnhouse.payload.request.RoomRequest` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.backend.guestnhouse.payload.request.RoomRequest` out of START_ARRAY token
     at [Source: (PushbackInputStream); line: 1, column: 1]

У меня есть этот метод, где я передаю список объектов в @RequestBody:

@PostMapping
public String addRoom(@RequestBody RoomRequest roomRequest) {
    return roomService.addRooms(roomRequest);
}

Это тело, которое я хочу перейти к методу

    {
     "rooms":[
              {
              "startdate":"2020-04-25",
              "enddate":"2020-04-29",
              "roomName":"room 1",
              },
              {
              "startdate":"2020-04-25",
              "enddate":"2020-04-29",
              "roomName":"room 2",
              }
            ]
    }

Это мой метод в component.ts

addRoomstobebooked(rooms:any){
    this.roomsService.addRooms(rooms).subscribe(
        data=> {
            this.message=data
            console.log(this.message)
        })
  }

Это мой сервис

addRooms(rooms::any ): Observable<any> {
return this.http.post(`${API_URL}`,rooms);
 }

Это массив что у меня есть в angular, что я передаю службе

[ 0: {
    "startdate":"2020-04-25",
    "enddate":"2020-04-29",
    "roomName":"room 1",
    },
1: {
    "startdate":"2020-04-25",
     "enddate":"2020-04-29",
     "roomName":"room 2",
    },
 ]

Как сопоставить список, который у меня есть в Angular, с тем, который я хочу передать методу в Spring?

Спасибо

1 Ответ

0 голосов
/ 18 апреля 2020

Ваш метод Spring Controller указывает, что тело запроса должно быть проанализировано в экземпляре класса RoomRequest.

Ваше Angular приложение отправляет массив.

Итак, Ошибка Spring происходит из-за того, что Spring пытается проанализировать JSon, который он получает, для объекта, но полученная строка JSon начинается с левой квадратной скобки ("["), которая является началом массива.

Это можно исправить, отправив экземпляр класса Typescript, который соответствует структуре вашего Java класса RoomRequest. Предположительно, класс RoomRequest (с обеих сторон) будет содержать массив объектов, который выглядит как данные, которые вы в настоящее время публикуете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...