JSON-Analysefehler: Instanz von "com.example.greetapp.domain.User" kann nicht erstellt werden

J Dizzle:

Ich verwende JHipster und führe den folgenden Curl-Befehl aus:

POST / API / Gang-Benutzer

mit Körper:

{
    "role": "member",
    "gang": "3",
    "user": "1"
}

aber ich bekomme folgenden Fehler:

JSON-Analysefehler: Instanz von com.getgreetapp.greetapp.domain.User(obwohl mindestens ein Creator vorhanden ist) kann nicht erstellt werden: Kein Konstruktor / Factory-Methode für String-Argumente zum Deserialisieren vom String-Wert ('1'); verschachtelte Ausnahme ist com.fasterxml.jackson.databind.exc.MismatchedInputException: Instanz von com.getgreetapp.greetapp.domain.User(obwohl mindestens ein Creator vorhanden ist) kann nicht erstellt werden: kein Konstruktor / Factory-Methode für String-Argumente zum Deserialisieren vom String-Wert ('1') \ n bei [ Quelle: (PushbackInputStream); Zeile: 4, Spalte: 10] (über die Referenzkette: com.getgreetapp.greetapp.domain.GangUser ["Benutzer"))

GangUserResource createGangUser

@PostMapping("/gang-users")
    @Timed
    public ResponseEntity<GangUser> createGangUser(@Valid @RequestBody GangUser gangUser) throws URISyntaxException {
        log.debug("REST request to save GangUser : {}", gangUser);
        if (gangUser.getId() != null) {
            throw new BadRequestAlertException("A new gangUser cannot already have an ID", ENTITY_NAME, "idexists");
        }
        User user = userRepository.findById(gangUser.getUser());
        GangUser result = gangUserRepository.save(gangUser);
        return ResponseEntity.created(new URI("/api/gang-users/" + result.getId()))
            .headers(HeaderUtil.createEntityCreationAlert(ENTITY_NAME, result.getId().toString()))
            .body(result);
    }

GangUser

package com.getgreetapp.greetapp.domain;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.*;
import javax.validation.constraints.*;

import java.io.Serializable;
import java.util.Objects;

/**
 * A GangUser.
 */
@Entity
@Table(name = "gang_user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class GangUser implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Column(name = "jhi_role", nullable = false)
    private String role;

    @ManyToOne
    private Gang gang;

    @ManyToOne
    private User user;

    public GangUser() {

    }

    public GangUser(String role, Gang gang, User user)
    {
        this.role = role;
        this.gang = gang;
        this.user = user;
    }

    // jhipster-needle-entity-add-field - JHipster will add fields here, do not remove
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRole() {
        return role;
    }

    public GangUser role(String role) {
        this.role = role;
        return this;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public Gang getGang() {
        return gang;
    }

    public GangUser gang(Gang gang) {
        this.gang = gang;
        return this;
    }

    public void setGang(Gang gang) {
        this.gang = gang;
    }

    public User getUser() {
        return user;
    }

    public GangUser user(User user) {
        this.user = user;
        return this;
    }

    public void setUser(User user) {
        this.user = user;
    }
    // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        GangUser gangUser = (GangUser) o;
        if (gangUser.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), gangUser.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "GangUser{" +
            "id=" + getId() +
            ", role='" + getRole() + "'" +
            "}";
    }
}

Benutzer

package com.getgreetapp.greetapp.domain;

import com.getgreetapp.greetapp.config.Constants;

import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.validation.constraints.Email;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.time.Instant;

/**
 * A user.
 */
@Entity
@Table(name = "jhi_user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User extends AbstractAuditingEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Pattern(regexp = Constants.LOGIN_REGEX)
    @Size(min = 1, max = 50)
    @Column(length = 50, unique = true, nullable = false)
    private String login;

    @JsonIgnore
    @NotNull
    @Size(min = 60, max = 60)
    @Column(name = "password_hash", length = 60, nullable = false)
    private String password;

    @Size(max = 50)
    @Column(name = "first_name", length = 50)
    private String firstName;

    @Size(max = 50)
    @Column(name = "last_name", length = 50)
    private String lastName;

    @Email
    @Size(min = 5, max = 254)
    @Column(length = 254, unique = true)
    private String email;

    @NotNull
    @Column(nullable = false)
    private boolean activated = false;

    @Size(min = 2, max = 6)
    @Column(name = "lang_key", length = 6)
    private String langKey;

    @Size(max = 256)
    @Column(name = "image_url", length = 256)
    private String imageUrl;

    @Size(max = 20)
    @Column(name = "activation_key", length = 20)
    @JsonIgnore
    private String activationKey;

    @Size(max = 20)
    @Column(name = "reset_key", length = 20)
    @JsonIgnore
    private String resetKey;

    @Column(name = "reset_date")
    private Instant resetDate = null;

    @JsonIgnore
    @ManyToMany
    @JoinTable(
        name = "jhi_user_authority",
        joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
        inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @BatchSize(size = 20)
    private Set<Authority> authorities = new HashSet<>();

    public User() {}

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLogin() {
        return login;
    }

    // Lowercase the login before saving it in database
    public void setLogin(String login) {
        this.login = StringUtils.lowerCase(login, Locale.ENGLISH);
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }

    public boolean getActivated() {
        return activated;
    }

    public void setActivated(boolean activated) {
        this.activated = activated;
    }

    public String getActivationKey() {
        return activationKey;
    }

    public void setActivationKey(String activationKey) {
        this.activationKey = activationKey;
    }

    public String getResetKey() {
        return resetKey;
    }

    public void setResetKey(String resetKey) {
        this.resetKey = resetKey;
    }

    public Instant getResetDate() {
        return resetDate;
    }

    public void setResetDate(Instant resetDate) {
        this.resetDate = resetDate;
    }

    public String getLangKey() {
        return langKey;
    }

    public void setLangKey(String langKey) {
        this.langKey = langKey;
    }

    public Set<Authority> getAuthorities() {
        return authorities;
    }

    public void setAuthorities(Set<Authority> authorities) {
        this.authorities = authorities;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        User user = (User) o;
        return !(user.getId() == null || getId() == null) && Objects.equals(getId(), user.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "User{" +
            "login='" + login + '\'' +
            ", firstName='" + firstName + '\'' +
            ", lastName='" + lastName + '\'' +
            ", email='" + email + '\'' +
            ", imageUrl='" + imageUrl + '\'' +
            ", activated='" + activated + '\'' +
            ", langKey='" + langKey + '\'' +
            ", activationKey='" + activationKey + '\'' +
            "}";
    }
}

Gang

package com.getgreetapp.greetapp.domain;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import javax.persistence.*;
import javax.validation.constraints.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * A Gang.
 */
@Entity
@Table(name = "gang")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Gang implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Column(name = "name", nullable = false)
    private String name;

    @NotNull
    @Column(name = "description", nullable = false)
    private String description;

    @NotNull
    @Column(name = "longitude", precision = 10, scale = 2, nullable = false)
    private BigDecimal longitude;

    @NotNull
    @Column(name = "latitude", precision = 10, scale = 2, nullable = false)
    private BigDecimal latitude;

    @NotNull
    @Column(name = "membership_approval", nullable = false)
    private String membershipApproval;

    @NotNull
    @Column(name = "privacy", nullable = false)
    private String privacy;

    public Gang() {}

    // jhipster-needle-entity-add-field - JHipster will add fields here, do not remove
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public Gang name(String name) {
        this.name = name;
        return this;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public Gang description(String description) {
        this.description = description;
        return this;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public BigDecimal getLongitude() {
        return longitude;
    }

    public Gang longitude(BigDecimal longitude) {
        this.longitude = longitude;
        return this;
    }

    public void setLongitude(BigDecimal longitude) {
        this.longitude = longitude;
    }

    public BigDecimal getLatitude() {
        return latitude;
    }

    public Gang latitude(BigDecimal latitude) {
        this.latitude = latitude;
        return this;
    }

    public void setLatitude(BigDecimal latitude) {
        this.latitude = latitude;
    }

    public String getMembershipApproval() {
        return membershipApproval;
    }

    public Gang membershipApproval(String membershipApproval) {
        this.membershipApproval = membershipApproval;
        return this;
    }

    public void setMembershipApproval(String membershipApproval) {
        this.membershipApproval = membershipApproval;
    }

    public String getPrivacy() {
        return privacy;
    }

    public Gang privacy(String privacy) {
        this.privacy = privacy;
        return this;
    }

    public void setPrivacy(String privacy) {
        this.privacy = privacy;
    }
    // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Gang gang = (Gang) o;
        if (gang.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), gang.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "Gang{" +
            "id=" + getId() +
            ", name='" + getName() + "'" +
            ", description='" + getDescription() + "'" +
            ", longitude=" + getLongitude() +
            ", latitude=" + getLatitude() +
            ", membershipApproval='" + getMembershipApproval() + "'" +
            ", privacy='" + getPrivacy() + "'" +
            "}";
    }
}
Cata:

Meiner bescheidenen Meinung nach gibt es ein paar Dinge zu überprüfen.

Erstens wird nicht empfohlen, dasselbe Objekt zum Speichern von Daten in Ihrer Datenbank und zum Beantworten einer Anfrage zu verwenden. Das Datenobjekt kann GangUser, User und Gang sein, während die Antwortobjekte GangUserApi, UserApi und GangApi sind. Mit diesem Ansatz können Sie eine Ebene ändern, ohne eine andere zu ändern.

Zweitens erwartet Ihr Dienst einen GangUser mit einem Benutzer im Inneren. Das gleiche Benutzerobjekt, mit dem Sie es in der Datenbank speichern. Sie senden dort nur einen String ("1") anstelle eines Objekts.

Eine schnelle Lösung könnte darin bestehen, den JSON zu ändern:

{
    "role": "member",
    "gang": "3",
    "user": {
        "id":"1"
    }
}

Aber ich würde gerne wissen, ob Sie verstehen, was los war. Das ist wichtiger als nur eine schnelle Lösung.

Prost.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

JSON-Analysefehler: Instanz der Klasse kann nicht erstellt werden

JSON-Analysefehler: Instanz von ArrayList kann nicht deserialisiert werden

JSON-Analysefehler: Instanz von "com.dto.IdDTO" kann nicht erstellt werden (obwohl mindestens ein Ersteller vorhanden ist)

JSON-Analysefehler: Instanz kann nicht deserialisiert werden

JsonMappingException: Instanz von kann nicht erstellt werden

Instanz von - Jackson kann nicht erstellt werden

Instanz von AndroidViewModel kann nicht erstellt werden

HTTP-Nachricht konnte nicht gelesen werden: org.springframework.http.converter.HttpMessageNotReadableException: JSON-Analysefehler: Instanz kann nicht erstellt werden

JSON-Analysefehler: Instanz von java.util.ArrayList kann nicht aus dem START_OBJECT-Token deserialisiert werden

Konnte JSON nicht lesen: Instanz von `java.util.LinkedHashMap` kann nicht erstellt werden

JSON: InvalidFormatException: Instanz von int kann nicht aus String-Wert erstellt werden

Jackson JSON Instanz von "About" kann nicht erstellt werden: Problem deserialisieren

Instanz von MainViewModel kann nicht mit Hilt erstellt werden

Instanz von ViewModel in Android kann nicht erstellt werden

Instanz von JwtClaimsBuilder in Quarkus-Anwendung kann nicht erstellt werden

Eine abgeleitete Instanz von Num kann nicht erstellt werden

Aktivität kann nicht geöffnet werden: Instanz von Android View Model kann nicht erstellt werden

So beheben Sie diesen FEHLER "JSON-Analysefehler: Instanz von" java.lang.Integer "kann nicht aus START_OBJECT deserialisiert werden

Gcloud-Instanz kann nicht erstellt werden

JSON konnte nicht gelesen werden: Instanz von `java.time.ZonedDateTime` kann nicht erstellt werden (es existieren keine Ersteller wie das Standardkonstrukt)

JSON-Analysefehler: Wert vom Typ "java.time.LocalDateTime" kann nicht von String deserialisiert werden

Überwinde "Instanz von InterfaceClass kann nicht erstellt werden", ohne das übergeordnete Element anzudeuten

Android - Fehler "Instanz von kann nicht erstellt werden (obwohl mindestens eine Erstellung vorhanden ist)" mit Retrofit

Instanz von `javax.naming.Name` in jackson kann nicht erstellt werden

Jackson.InvalidDefinitionException: Instanz von java.time.OffsetDateTime in JUnit @BeforeEach kann nicht erstellt werden

Spring Boot - Jersey Client - Jackson Instanz von `java.time.Instant` kann nicht erstellt werden

Eine abgeleitete Instanz von MonadTrans für newtype kann nicht erstellt werden

Instanz von IntentResponse kann nicht erstellt werden. Das validierte Objekt ist null

InvalidDefinitionException: Instanz von `org.slf4j.Logger` kann nicht erstellt werden

TOP Liste

  1. 1

    Hangfire funktioniert nicht wie erwartet mit ASP.NET Core 3.1

  2. 2

    Konvertiert nicht von Methodengruppe in Func <int>

  3. 3

    Wie berechnet man den Gesamtpreis einer Bestellung mit Rails?

  4. 4

    Identifizieren Sie die Werte der ersten Spalte pro ID und arbeiten Sie basierend auf diesem Wert

  5. 5

    Konvertieren Sie eine Textdatei mit mehreren Trennzeichen in CSV

  6. 6

    So greifen Sie auf eine Variable in einer Singleton-Klasse zu, die von einem Modul in Play 2.5 Scala verwendet wird

  7. 7

    So aktualisieren oder aktualisieren Sie alle Fragmente vom Viewpager Android

  8. 8

    Wie implementiere ich die "equals" -Methode für Generika mit "instanceof"?

  9. 9

    Probleme beim numerischen Integrieren einer multivariablen Funktion WRT einer einzelnen Variablen in Julia (mit hcubature)

  10. 10

    Was ist die idiomatischste Rust-Methode, um ein optionales Element eines Vec bedingt zu ändern?

  11. 11

    Printf gibt Zeichen aus, die über die angegebene Länge des Arrays hinausgehen

  12. 12

    So installieren Sie ein privates NPM-Paket über SSH

  13. 13

    findOneAndUpdate mit Push-Array-Elementen gibt Fehler im Mungo

  14. 14

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  15. 15

    Verwendung eines Winkelmessers für Leistungstests

  16. 16

    Wie erstelle ich ein Objekt für ein Django-Modell mit vielen zu vielen Feldern?

  17. 17

    Beziehungen auf zusammengesetzten Schlüsseln mit sqlalchemy

  18. 18

    c # itextsharp absolute Textposition mehrzeilig

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Sind die folgenden 3 Möglichkeiten, Objekte zu definieren, identisch?

  21. 21

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

heißlabel

Archiv