Show Menu
THEMEN×

Aktivieren eines JSON-Exports für eine Komponente

Komponenten können angepasst werden, um einen JSON-Export ihrer Inhalte basierend auf einem Modeler-Framework zu generieren.

Überblick

The JSON Export is based on Sling Models , and on the Sling Model Exporter framework (which itself relies on Jackson annotations ).
Das bedeutet, dass die Komponente über ein Sling-Modell verfügen muss, wenn JSON exportiert werden soll. Deshalb müssen Sie diese beiden Schritte befolgen, um einen JSON-Export für eine beliebige Komponente zu aktivieren.

Definieren eines Sling-Modells für die Komponente

Zunächst muss ein Sling-Modell für die Komponente definiert werden.
For an example of using Sling Models see the article Developing Sling Model Exporters in AEM .
Die Implementierungsklasse des Sling-Modells muss wie folgt kommentiert werden:
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)

This ensures that your component could be exported on its own, using the .model selector and the .json extension.
Außerdem kann die Sling-Modell-Klasse dadurch in der ComponentExporter -Oberfläche übernommen werden.
Jackson-Anmerkungen werden in der Regel nicht auf der Ebene der Sling-Modell-Klasse festgelegt, sondern auf der Ebene der Modell-Oberfläche. Damit wird sichergestellt, dass der JSON-Export als Teil der Komponenten-API gewertet wird.
The ExporterConstants and ComponentExporter classes come from the com.adobe.cq.export.json bundle.

Mehrere Selektoren verwenden

Obwohl es sich nicht um einen Standard-Anwendungsfall handelt, ist es möglich, zusätzlich zum model Selektor mehrere Selektoren zu konfigurieren.
https://<server>:<port>/content/page.model.selector1.selector2.json

In einem solchen Fall muss der model Selektor jedoch der erste Selektor sein und die Erweiterung muss .json sein.

Anmerkungen für die Sling-Modell-Oberfläche

Damit sie im JSON-Exporter-Framework beachtet wird, sollte die ComponentExporter -Oberfläche (oder ContainerExporter bei Container-Komponenten) in der Modell-Oberfläche implementiert werden.
The corresponding Sling Model interface ( MyComponent ) would be then annotated using Jackson annotations to define how it should be exported (serialized).
Es müssen die richtigen Anmerkungen für die Modell-Oberfläche angewendet werden, um zu definieren, welche Methoden serialisiert werden sollen. Standardmäßig werden alle Methoden serialisiert, die die gängigen Benennungskonventionen für Abfragemethoden einhalten. Ihre JSON-Eigenschaftsnamen werden dabei naturgemäß von den Namen der Abfragemethode abgeleitet. This can be prevented or overridden using @JsonIgnore or @JsonProperty to rename the JSON property.

Beispiel

Die Kernkomponenten unterstützen den JSON-Export seit der Version  1.1.0 der Kernkomponenten . Sie können als Referenz verwendet werden.
Ein Beispiel ist die Sling-Modell-Implementierung der Bild-Kernkomponente und deren kommentierte Oberfläche.
CODE AUF GITHUB
Den Code dieser Seite finden Sie auf GitHub