как отправить список длинных для работы с контроллером отдыха - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю над API. Я хочу отправить список Long, чтобы найти проект по идентификатору. Это контроллер покоя:


@PostMapping("person/{id}/projects/")
    @JsonFormat (with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
    public Person addProject(@PathVariable Long id, @RequestBody List<Long> project_id){
        Optional<Person> person = personRepo.findById(id);
        Person person1 = person.get();
        for(int i=0; i<project_id.size(); i++){
            System.out.println(project_id.get(i));
            Optional <Project> project = projectRepo.findById(project_id.get(i));
            person1.getProjectList().add(project.get());

        }
        System.out.println((person1.getProjectList()).toString());

        return personRepo.save(person1);
    }

И это запрос, который я посылаю контроллеру покоя

{
    "project_id": [1,2,3]
}

И я получаю это исключение:

JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.lang.Long>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.lang.Long>` out of START_OBJECT token\n at [Source: (PushbackInputStream); line: 1, column: 1]

Я попробовал тот же код, что и PathVariable для идентификатора, который работал. Но это доцент

1 Ответ

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

Вы на самом деле отправляете объект json здесь, а не список

Вместо этого отправьте это в своем почтовом запросе.

 [1,2,3]

Ваш предыдущий запрос мог бы работать, если у вас было что-то подобное

public class X {
  @JsonFormat (with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
  private List<Long> project_id;
} 

@PostMapping("person/{id}/projects/")
public Person addProject(@PathVariable Long id, @RequestBody X x){..}
...