Estoy tratando de deserializar una lista de valores largos:
{ "ids": [1, 2, 3] }Con el siguiente Método:
@PostMapping(value = "/export") public ResponseEntity<SomeDto> exportCsv(@RequestBody Long[] ids) { // Some methods return ResponseEntity.ok(someDto); } Pero sigo recibiendo el siguiente error: JSON parse error: Cannot deserialize value of type Long . El error es el mismo usando List<Long>, solo para ArrayList<Long>.
Lo probé con @JsonDeserialize(using = NumberDeserializers.LongDeserializer.class) , pero parece que no funciona o lo estoy usando mal.
El cuerpo de la solicitud anterior representa una clase POJO con ids como una propiedad como la siguiente
public class Body { private Long[] ids; //getters and setters }Y luego use este POJO como RequestBody
public ResponseEntity<SomeDto> exportCsv(@RequestBody Body body)Con el objeto json que intenta enviar, Spring asume que es un objeto con un campo de miembro ids . Si desea adjuntar directamente a una lista, envíe el siguiente json como cuerpo:
[5, 6, 8]Esto funcionará para:
@PostMapping(value = "/export") public ResponseEntity<SomeDto> exportCsv(@RequestBody Long[] ids) { ... }y
@PostMapping(value = "/export") public ResponseEntity<SomeDto> exportCsv(@RequestBody List<Long> ids) { ... }