Ich benutze Jackson, um ein Objekt von mir in Json umzuwandeln. Das Objekt hat 2 Felder:
@Entity
public class City {
@id
Long id;
String name;
public String getName() { return name; }
public void setName(String name){ this.name = name; }
public Long getId() { return id; }
public void setName(Long id){ this.id = id; }
}
Da ich dies mit der automatischen Vervollständigungsfunktion von jQuery verwenden möchte, möchte ich, dass 'id' als 'Wert' im json und 'name' als 'label' angezeigt werden. Die Dokumentation von Jackson ist diesbezüglich nicht klar und ich habe jede Annotation ausprobiert, die auch nur aus der Ferne so aussieht, als würde sie das tun, was ich brauche, aber ich kann nicht name
so erscheinen label
und id
so erscheinen wie value
im json.
Weiß jemand, wie man das macht oder ob das möglich ist?
Antworten:
Haben Sie versucht, @JsonProperty zu verwenden?
quelle
@JsonProperty(value="label")
und es funktionierte nicht. Ich habe es versucht, wie Sie vorgeschlagen haben, und es funktioniert! Danke Mann, das wird jetzt wirklich helfen, den Code zu vereinfachen.Beachten Sie, dass es
org.codehaus.jackson.annotate.JsonProperty
in Jackson 1.x undcom.fasterxml.jackson.annotation.JsonProperty
in Jackson 2.x gibt. Überprüfen Sie, welchen ObjectMapper Sie verwenden (ab welcher Version), und stellen Sie sicher, dass Sie die richtige Anmerkung verwenden.quelle
org.json4s.jackson
Namespace. :) und möglicherweise andere Implementierung vonjackson
YMMV.Es gibt noch eine weitere Option zum Umbenennen des Felds:
Jackson MixIns .
Nützlich, wenn Sie sich mit Klassen von Drittanbietern befassen, die Sie nicht mit Anmerkungen versehen können , oder wenn Sie die Klasse einfach nicht mit Jackson-spezifischen Anmerkungen verschmutzen möchten.
Die Jackson-Dokumentation für Mixins ist veraltet, daher kann dieses Beispiel mehr Klarheit bieten. Im Wesentlichen: Sie erstellen eine Mixin-Klasse, die die Serialisierung wie gewünscht ausführt. Registrieren Sie es dann im ObjectMapper:
quelle
Jackson
Wenn Sie Jackson verwenden, können Sie die
@JsonProperty
Annotation verwenden, um den Namen einer bestimmten JSON-Eigenschaft anzupassen.Daher müssen Sie nur die Entitätsfelder mit der
@JsonProperty
Anmerkung versehen und einen benutzerdefinierten JSON-Eigenschaftsnamen wie folgt angeben:JavaEE oder JakartaEE JSON-B
JSON-B ist die Standardbindungsschicht zum Konvertieren von Java-Objekten in und von JSON. Wenn Sie JSON-B verwenden, können Sie den Namen der JSON-Eigenschaft über die
@JsonbProperty
Anmerkung überschreiben :quelle