Aktivera JSON-export för en komponent

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

Översikt

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

Det innebär att komponenten måste ha en Sling-modell om den behöver exportera JSON. Därför måste du följa dessa två steg för att aktivera JSON-export för alla komponenter.

Definiera en segmenteringsmodell för komponenten

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

OBSERVERA

Ett exempel på hur du använder delningsmodeller finns i artikeln Developing Sling Model Exporters in 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 komponenten kan exporteras fristående med .model-väljaren och .json-tillägget.

Dessutom anger detta att klassen Sling Model kan anpassas till gränssnittet ComponentExporter.

OBSERVERA

Jackson-anteckningar anges vanligtvis 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.

OBSERVERA

Klasserna ExporterConstants och ComponentExporter kommer från paketet com.adobe.cq.export.json.

Använda flera väljare

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

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

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

Anteckna gränssnittet för segmenteringsmodellen

Modellgränssnittet bör implementera gränssnittet ComponentExporter (eller ContainerExporter om det är en behållarkomponent) för att JSON-exportramverket ska kunna ta hänsyn till.

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

Modellgränssnittet måste kommenteras ordentligt för att definiera vilka metoder som ska serialiseras. Som standard kommer alla metoder som respekterar den vanliga namnkonventionen för get-ters att serialiseras och härleder sina JSON-egenskapsnamn 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

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:

På denna sida