Warum jackson transientes Mitglied auch serialisiert?
Ich bin serialisieren POJO in JSON mit Jackson 2.1.4, aber ich wollte ein bestimmtes Feld aus immer serialisiert. Ich verwendete transiente, aber noch ist es zu serialisieren, dass element.
public class TestElement {
int x;
private transient String y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
Ich bin Serialisierung wie folgt:
public static void main(String[] args) throws JsonProcessingException {
TestElement testElement = new TestElement();
testElement.setX(10);
testElement.setY("adasd");
ObjectMapper om = new ObjectMapper();
String serialized = om.writeValueAsString(testElement);
System.err.println(serialized);
}
Bitte nicht schlagen @JsonIgnore
wie ich nicht wollen, zu binden, das Modell jackson spezifischen Anmerkungen. Es kann getan werden mit transient nur? Gibt es eine API, die auf objectmapper für die Sichtbarkeit-Einstellungen?
InformationsquelleAutor der Frage Naman | 2014-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, Jackson serialisiert die
transient
Mitglied ist, weil die Getter verwendet werden, um zu bestimmen, was zu serialisieren, nicht das Mitglied selbst - und day
einen öffentlichen getter, das wird serialisiert.Wenn Sie ändern möchten, die Standard-und Jackson-Felder verwenden - einfach zu tun:
Andere Art und Weise zu ignorieren, eine Eigenschaft, auf die Serialisierung zu tun, es direkt auf der Klasse:
Und ein anderer Weg ist, direkt auf dem Feld:
Hoffe, das hilft.
InformationsquelleAutor der Antwort Eugen
Einen neuen Weg zu stoppen Jackson aus serialisieren und Deserialisieren ist zu nennen
mapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true)
.InformationsquelleAutor der Antwort user2978778
Kann ich nicht machen Kommentare so vollständig, dass die bisherige Antwort hier, die änderung der (jetzt) veralteten Methode
setVisibilityChecker
und das hinzufügen einer fehlenden Klausel für booleans:InformationsquelleAutor der Antwort idelvall