Aktivera JSON-export för en komponent enabling-json-export-for-a-component

Komponenter kan anpassas för att generera JSON-export av deras innehåll baserat på ett modellramverk.

Ökning overview

JSON-exporten baseras på Sling Models och ramverket Sling Model Exporter (som i sin tur är beroende av Jackson-anteckningar).

Det innebär att komponenten måste ha en Sling-modell om den måste exportera JSON. Följ därför de här två stegen för att aktivera JSON-export för alla komponenter.

Definiera en delningsmodell för komponenten define-a-sling-model-for-the-component

Först måste en segmentmodell definieras för komponenten.

NOTE
Ett exempel på hur du använder delningsmodeller finns i Utveckla export av delningsmodeller i AEM.

Implementeringsklassen för Sling-modellen måste kommenteras med följande:

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

Detta garanterar att din komponent kan exporteras fristående med väljaren .model och tillägget .json.

Detta anger dessutom att klassen Sling Model kan anpassas till gränssnittet ComponentExporter.

NOTE
Jackson-anteckningar anges inte på klassnivå för Sling Model, utan på gränssnittsnivå för Model. Detta för att säkerställa att JSON-exporten betraktas som en del av komponent-API:t.
NOTE
Klasserna ExporterConstants och ComponentExporter kommer från paketet com.adobe.cq.export.json.

Använda flera väljare multiple-selectors

Även om det inte är ett standardanvändningsfall går det att konfigurera flera väljare förutom väljaren model.

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

I så fall måste väljaren model vara den första väljaren och tillägget måste vara .json.

Anteckna gränssnittet för segmenteringsmodellen annotate-the-sling-model-interface

Modellgränssnittet bör implementera gränssnittet ComponentExporter (eller ContainerExporter om det finns en behållarkomponent) för att JSON-exportramverket ska kunna användas.

Motsvarande Sling Model-gränssnitt ( MyComponent) kommenteras sedan med Jackson-anteckningarför att definiera hur det ska exporteras (serialiseras).

Modellgränssnittet måste vara korrekt kommenterat för att definiera vilka metoder som ska serialiseras. Som standard serialiseras alla metoder som respekterar den vanliga namnkonventionen för get-ters och hämtar JSON-egenskapsnamnen naturligt från get-namnen. Detta kan förhindras eller åsidosättas med @JsonIgnore eller @JsonProperty för att byta namn på JSON-egenskapen.

Exempel example

Core Components har stöd för JSON-export sedan version 1.1.0 av kärnkomponenterna och kan användas som referens.

Ett exempel finns i Sling Model-implementeringen av Image Core-komponenten och dess kommenterade gränssnitt.

KOD PÅ GITHUB

Koden för den här sidan finns på GitHub

Mer information finns i följande:

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2