Abilitazione dell'esportazione JSON per un componente

I componenti possono essere adattati per generare l’esportazione JSON dei loro contenuti in base a un framework di modellazione.

Panoramica

L'esportazione JSON si basa su Sling Models e sul framework Sling Model Exporter (che si basa su Jackson annotations).

Questo significa che il componente deve avere un modello Sling se deve esportare JSON. Pertanto, per abilitare l’esportazione JSON su qualsiasi componente dovrete seguire questi due passaggi.

Definire un modello Sling per il componente

Per il componente deve essere definito innanzitutto un modello Sling.

NOTA

Per un esempio di utilizzo di Sling Models, vedere l'articolo Developing Sling Model Exporter in AEM.

La classe di implementazione del modello Sling deve essere annotata con le seguenti annotazioni:

@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)

Questo garantisce che il componente possa essere esportato autonomamente, utilizzando il selettore .model e l'estensione .json.

Inoltre, questo specifica che la classe Sling Model può essere adattata all'interfaccia ComponentExporter.

NOTA

Le annotazioni Jackson non vengono in genere specificate a livello di classe Sling Model, ma a livello di interfaccia Model. In questo modo, assicuratevi che l’esportazione JSON sia considerata parte dell’API del componente.

NOTA

Le classi ExporterConstants e ComponentExporter provengono dal pacchetto com.adobe.cq.export.json.

Utilizzo di più selettori

Sebbene non sia un caso d'uso standard, è possibile configurare più selettori oltre al selettore model.

https://<server>:<port>/content/page.model.selector1.selector2.json

In tal caso, tuttavia, il selettore model deve essere il primo selettore e l'estensione deve essere .json.

Annota dell'interfaccia del modello Sling

Per essere presa in considerazione dal framework JSON Exporter, l'interfaccia Model deve implementare l'interfaccia ComponentExporter (o ContainerExporter, nel caso di un componente contenitore).

L'interfaccia del modello Sling corrispondente ( MyComponent) verrà quindi annotata utilizzando le annotazioni di Jackson per definire come esportare (serializzato).

L'interfaccia Model deve essere annotata correttamente per definire i metodi da serializzare. Per impostazione predefinita, tutti i metodi che rispettano le consuete convenzioni di denominazione per i getter saranno serializzati e deriveranno naturalmente i nomi delle loro proprietà JSON dai nomi dei getter. Questo può essere impedito o sostituito utilizzando @JsonIgnore o @JsonProperty per rinominare la proprietà JSON.

Esempio

I componenti core supportano l'esportazione JSON dalla versione 1.1.0 dei componenti core e possono essere utilizzati come riferimento.

Per un esempio, consultate Implementazione del modello Sling del componente Image Core e la relativa interfaccia annotata.

CODICE SU GITHUB

Puoi trovare il codice di questa pagina su GitHub

Per maggiori dettagli, consulta:

In questa pagina

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now