Möglicherweise konfigurieren Sie Jackson-Json Mapper, um Eigenschaften basierend auf welchem ​​Objekt auszuschließen?

StackOverflow https://stackoverflow.com/questions/2507768

  •  22-09-2019
  •  | 
  •  

Frage

Angenommen, ich habe Objekte wie ein Unternehmen mit einer Liste von Adressobjekten und einer Bestellung, die ein Unternehmen hat.

Ist es möglich, so zu konfigurieren, dass die Reihenfolge, die serialisiert ist, die Liste der Adressen aus dem Geschäftsobjekt ausschließt und das Geschäft serialisiert wird, enthält es die Liste?

Ich benutze AJAX, um Daten für eine RIA zu ziehen, und wenn ich mit der Bestellung arbeite, interessiere ich mich nicht wirklich für die Adressdaten, aber wenn ich mich mit dem Geschäft befasse, möchte ich die Liste.

Ich verwende auch Hibernate für Persistenz, daher ist dies wirklich eine Effizienz- und Leistungsoptimierung.

War es hilfreich?

Lösung

Wenn ich die Frage richtig verstehe, ja, denke ich JSON -Ansichten Denn Jackson würde dies zulassen. Sie würden grundsätzlich zwei verschiedene Ansichten (Profile) für denselben Typ erstellen und wählen, welche für die Serialisierung verwendet werden soll.

Andere Tipps

Sie könnten die verwenden Jsonignore Annotation um die zu ignorieren Adresse Liste in der Serialisierung auflisten und die Verwendung von Anmerkungen in der ausschalten ObjectMapper's Serialisierungskonfiguration beim Serialisieren a Geschäft. Dies bedeutet natürlich, dass auch andere Anmerkungen, die Sie verwenden könnten, auch ignoriert werden. Nicht perfekt, aber Sie könnten eine bessere Lösung finden, die sich damit befasst, hoffe, dass es (offensichtlich) hilft.

ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);

Ja, du kannst es schaffen. Alles, was Sie brauchen, ist, die Adresse der Adresse als vorübergehende Eigenschaft in Ihrem Geschäftsobjekt zu deklarieren.

Fügen Sie dann den folgenden Code zu Ihrem JsonConfig hinzu:

jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore 

wird verwendet, um Eigenschaften zu ignorieren, die Sie nicht in JSON konvertieren möchten.

public class UserDocument {

    private long id;

    private String documentUrl;

    @JsonIgnore
    private byte documentType;

    //traditional getters and setters
}

Ausgabe: Dadurch werden die Eigenschaften konvertiert Ich würde und documenturl wird aber keine Eigenschaft konvertieren Dokumentenart.

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top