Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

476
Visualizações
Spring Boot: no se puede deserializar el objeto JSON enviado por Fetch

Estoy tratando de enviar un objeto JSON desde el front-end js a Spring Boot. Sigo recibiendo el siguiente error en Spring Boot

Resuelto [org.springframework.http.converter.HttpMessageNotReadableException: error de análisis de JSON: no se puede deserializar el valor de tipo com.c3.healthapp.model.HeartRateEntry del valor de matriz (token JsonToken.START_ARRAY ); La excepción anidada es com.fasterxml.jackson.databind.exc.MismatchedInputException: no se puede deserializar el valor de tipo com.c3.healthapp.model.HeartRateEntry del valor de matriz (token JsonToken.START_ARRAY )<EOL> en [Fuente: (org.springframework. util.StreamUtils$NonClosingInputStream); línea: 1, columna: 1]]

y un estado 400 en el lado del cliente.

La función Javascript que se utiliza para enviar es

 function saveEntryToDB(entry){ fetch("/customer/heartrate/save", { method: "POST", headers: {'Content-Type': 'application/json'}, body: JSON.stringify(entry) }).then(res => { console.log("User saved. response:", res); }); }

El objeto que se envía

 { entryHeartRate: 55, dateOfEntry: Tue Mar 01 2022 00:00:00 GMT+0000 (Greenwich Mean Time) }

Método de controlador de arranque de primavera

 @PostMapping("/heartrate/save") public ResponseEntity<String> saveHeartRate(@RequestBody HeartRateEntry heartRateEntry) { String username = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(); Customer customer = customerService.getCustomer(username); customer.getHeartRateEntries().add(heartRateEntry); customerService.saveCustomer(customer); URI uri = URI.create(ServletUriComponentsBuilder.fromCurrentContextPath().path("/heartrate/save").toUriString()); return ResponseEntity.created(uri).body("Saved!"); }

y clase HeartRateEntry

 @Entity @Data @NoArgsConstructor @AllArgsConstructor public class HeartRateEntry { @Id @GeneratedValue(strategy = IDENTITY) private Long entryId; private int entryHeartRate; private Date dateOfEntry; @Override public String toString() { return "Entry Id: " + entryId + " Entry Heart Rate: " + entryHeartRate + " Date Of Entry : " + dateOfEntry; } }

Hasta ahora, he podido enviar otras entidades desde formularios HTML y obtener valores (incluida una serie de entradas de frecuencia cardíaca) devueltos desde Spring Boot sin problemas.

Intenté formatear la fecha como dd/mm/yy y agregar la anotación '@JsonFormat(pattern="dd/mm/yyyy")' al atributo dateOfEntry en la clase HeartRateEntry, en caso de que haya algún problema con el análisis de fechas , pero esto no parece hacer una diferencia.

También intenté agregar un atributo de identificación al objeto JSON antes de enviarlo. Esto tampoco parece hacer una diferencia.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tuve que crear un objeto JS nulo y agregarle los valores antes del envío. Creo que tiene que ver con el prototipo del objeto javascript que se almacena dentro del objeto creado.

 let nullEntry = Object.create(null); nullEntry.entryHeartRate = entry.entryHeartRate; nullEntry.entryHeartRate = entry.dateOfEntry; saveEntryToDB(nullEntry);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda