Wątek przeniesiony 2023-04-20 19:29 z JavaScript przez Riddle.

Deserializacja JSON'a podczas odbierania żądań

0

Hej,
W mojej aplikacji webowej , którą piszę w Angular i SpringBoot, przy przesyłaniu wyniku testu dla zalogowanego użytkownika otrzymuję następujący błąd:

 Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `pl.serwer.User` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (2); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `pl.serwer.User` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (2)<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 1]]

Co muszę dodać do kodu?

0
martynam napisał(a):

Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of pl.serwer.User

Chyba wiesz, czego źródła tu trzeba załączyć

0

No właśnie nie wiem

AnyKtokolwiek napisał(a):
martynam napisał(a):

Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of pl.serwer.User

Chyba wiesz, czego źródła tu trzeba załączyć

1

Wrzuć obiekt, który wysyłasz w angularze i obiekt który otrzymujesz po stronie Springa.
Pewnie przesyłasz number a oczekujesz stringa lub na odwrót.
Porównaj sobie typy danych poszczególnych pól po obydwu stronach

0
FrontendGuy napisał(a):

Wrzuć obiekt, który wysyłasz w angularze i obiekt który otrzymujesz po stronie Springa.
Pewnie przesyłasz number a oczekujesz stringa lub na odwrót.
Porównaj sobie typy danych poszczególnych pól po obydwu stronach

Przesyłam number, a po stronie backendu oczekuję int

0
martynam napisał(a):
FrontendGuy napisał(a):

Wrzuć obiekt, który wysyłasz w angularze i obiekt który otrzymujesz po stronie Springa.
Pewnie przesyłasz number a oczekujesz stringa lub na odwrót.
Porównaj sobie typy danych poszczególnych pól po obydwu stronach

Przesyłam number, a po stronie backendu oczekuję int

Nie wiemy, czy oczekujesz int. Sądzę, że twoj kod oczekuje czegoś innego.
Mało prawodpobne, byś te klasę robił świadomie, sądzę że wklejka z netu

0

Odpalam szklaną kulę.
Twoim problemem jest to że definiujesz endpoint jako

@PutMapping("/users/{login}/points")

a przesyłasz pod:

${this.url}/${user.login}

Powinieneś przesyłać pod

${this.url}/${user.login}/points

dodatkowo nie przesyłaj samego wynik.points a opakuj to w obiekt: {points: wynik.points}

0

@obscurity: matko kochana jaki antypatern :p. nigdy nie powinno się kodzić na froncie this.url. Po co front ma być świadomy infrastruktury. Zawsze walisz na siebie a proxy przekierowuje tam gdzie trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1