Abilitare l’esportazione JSON per un componente enabling-json-export-for-a-component

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

Panoramica overview

L'esportazione JSON è basata su modelli Sling e sul framework Sling Model Exporter (che a sua volta si basa su annotazioni Jackson).

Questo approccio significa che il componente deve disporre di un modello Sling se deve esportare JSON. Pertanto, segui questi due passaggi per abilitare l’esportazione JSON su qualsiasi componente.

Definire un modello Sling per il componente define-a-sling-model-for-the-component

Innanzitutto, è necessario definire un modello Sling per il componente.

NOTE
Per un esempio di utilizzo dei modelli Sling, vedere Sviluppo di Sling Model Exporters 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)

In questo modo è possibile esportare il componente da solo utilizzando il selettore .model e l'estensione .json.

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

NOTE
Le annotazioni Jackson non vengono specificate a livello di classe del modello Sling, ma piuttosto a livello di interfaccia del modello. Questo approccio assicura che l’esportazione JSON sia considerata parte dell’API del componente.
NOTE
Le classi ExporterConstants e ComponentExporter provengono dal bundle com.adobe.cq.export.json.

Utilizzare più selettori multiple-selectors

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

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

Tuttavia, in questo caso il selettore model deve essere il primo e l'estensione deve essere .json.

Annotare l’interfaccia del modello Sling annotate-the-sling-model-interface

Affinché il framework di esportazione JSON possa essere elaborato, l'interfaccia del modello deve implementare l'interfaccia ComponentExporter (o ContainerExporter per un componente contenitore).

L'interfaccia del modello Sling corrispondente ( MyComponent) verrà quindi annotata utilizzando annotazioni Jackson per definire come deve essere esportata (serializzata).

L'interfaccia del modello deve essere annotata correttamente per definire quali metodi vengono serializzati. Per impostazione predefinita, tutti i metodi che rispettano la consueta convenzione di denominazione per i getter vengono serializzati e derivano i propri nomi di proprietà JSON naturalmente dai nomi dei getter. Questo approccio può essere impedito o sovrascritto utilizzando @JsonIgnore o @JsonProperty per rinominare la proprietà JSON.

Esempio example

I Componenti core hanno supportato l'esportazione JSON dalla versione 1.1.0 dei Componenti core e possono essere utilizzati come riferimento.

Ad esempio, consulta l’implementazione del modello Sling del componente core Immagine e la relativa interfaccia con annotazioni.

CODICE SU GITHUB

Puoi trovare il codice di questa pagina su GitHub

recommendation-more-help
51c6a92d-a39d-46d7-8e3e-2db9a31c06a2