ich nur eines nicht-jackson Lösung denken kann, eine Basisklasse zu verwenden, die auf die tatsächliche Klasse keine Referenzen für die Zuordnung haben und werfen dann:
// expect a B on an incoming request
class B {
// ...
}
// after the data is read, cast to A which will have empty references
class A extends B {
public Map<String,List<String>> references;
}
Warum tun Sie senden sogar die Referenzen, wenn Sie sie nicht wollen?
Oder sind die eingehenden Daten aus Ihren Händen und Sie wollen nur die Mapping-Ausnahme vermeiden, die Ihnen sagt, dass Jackson keine Eigenschaft für eingehende Referenzen finden kann? Dafür verwenden wir eine Basisklasse, die alle unsere Json Modellklassen erben:
public abstract class JsonObject {
@JsonAnySetter
public void handleUnknown(String key, Object value) {
// for us we log an error if we can't map but you can skip that
Log log = LogFactory.getLog(String.class);
log.error("Error mapping object of type: " + this.getClass().getName());
log.error("Could not map key: \"" + key + "\" and value: \"" + "\"" + value.toString() + "\"");
}
Dann in der POJO fügen Sie @JsonIgnoreProperties
so dass eingehende Eigenschaften wird handleUnknown()
@JsonIgnoreProperties
class A extends JsonObject {
// no references if you don't need them
}
erhalten weitergeleitet bearbeiten
This SO Thread beschreibt, wie Sie Mixins verwenden. Dies könnte die Lösung sein, wenn Sie Ihre Struktur genau so beibehalten wollen wie ich es ist, aber ich habe es nicht versucht.
Das stimmt. Die eingehenden Daten sind nicht wirklich in unseren Händen. Aber die Clients senden immer Referenzattribute im richtigen Format, so dass handleUnknown niemals aufgerufen wird. – guerilla
Ah, mein Schlechter, habe ein bisschen Information vergessen. Sie benötigen '@ JsonIgnoreProperties' am POJO, wenn Sie eingehende Daten ignorieren wollen. Ich werde meinen Beitrag aktualisieren. (PS: Wir verwenden dies, um die REST-Ressource von Facebook zu verbrauchen und alle von Facebook gesendeten Eigenschaften, die nicht in unserem POJO enthalten sind, werden nur eingeloggt und dann entscheiden wir, ob wir sie hinzufügen wollen oder nicht) – Pete
Aber Referenzen sind in meinem POJO so passt immer zum Setter – guerilla