/ / Json / Jackson Namenskonvention - Java, Json, Jackson

Json / Jackson Namenskonvention - Java, Json, Jackson

Meine Ausnahmeklasse sieht folgendermaßen aus, wenn sie mit Jackson serialisiert wurde, als ich versuchte, sie zu deserialisieren Die Mitglieder wurden "Nachricht" und "" benannt.restoreStatus", ich hatte erwartet, dass sie" Nachricht "sind und"Status".

Warum hat sich jackson dafür entschieden, meine Statusvariable als restoreStatus zu benennen? Wie funktionieren die Namenskonventionen von jackson / json?

@XStreamAlias("RestoreInProgressException")
public class RestoreInProgressException extends HostManagerException {

private static final long serialVersionUID = xxxx;

private RestoreStatus status;

@JsonCreator
public RestoreInProgressException(@JsonProperty("message") String message, @JsonProperty("status") RestoreStatus status) {
super(message, HttpStatus.SC_CONFLICT);
this.status = status;
}

public RestoreStatus getRestoreStatus() {
return this.status;
}

}

Antworten:

1 für die Antwort № 1

Bitte sehen Sie diese Frage Jackson Feld basierte Serialisierung Hier finden Sie Informationen, wie der Serialisierungsalgorithmus in der Jackson-Bibliothek funktioniert. In deinem Beispiel hast du status Eigentum aber getRestoreStatus Getter-Methode. Jackson liest alle Getter-Methoden aus der Klasse und versucht sie zu serialisieren. Jackson fügt der Ausgabe auch JSON hinzu status Eigenschaft, wenn Sie es mit kommentieren @JsonProperty oder @JsonProperty("status"). In diesem Fall enthält Ihre Ausgabe Jackson zwei Eigenschaften status und restoreStatus. Wenn du nur haben willst status Eigenschaft in Ihrer Ausgabe-JSON müssen Sie:
I. Ändern Sie den Namen der Getter-Methode in getStatus:

public RestoreStatus getStatus() {
return this.status;
}

II. Anmerkung hinzufügen @JsonProperty("status") zu deiner Methode:

@JsonProperty("status")
public RestoreStatus getRestoreStatus() {
return this.status;
}