JSON-export inschakelen voor een component enabling-json-export-for-a-component

Componenten kunnen worden aangepast om JSON-export van hun inhoud te genereren op basis van een modellerframework.

Overzicht overview

De JSON-export is gebaseerd op Verkoopmodellenen de Verkoopmodel exporteren kader (dat zelf op Jackson-annotaties).

Dit betekent dat de component een Sling Model moet hebben als het JSON moet uitvoeren. Voer daarom de volgende twee stappen uit om JSON-export voor een willekeurige component mogelijk te maken.

Definieer een verkoopmodel voor de component define-a-sling-model-for-the-component

Eerst moet een Sling Model voor de component worden bepaald.

NOTE
Voor een voorbeeld van het gebruiken van het Verdelen Modellen, zie Exporteurs van verkoopmodellen ontwikkelen in AEM.

De implementatieklasse Sling Model moet met het volgende worden geannoteerd:

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

Zo weet u zeker dat uw component zelfstandig kan worden geƫxporteerd met de opdracht .model en de .json extensie.

Daarnaast wordt hiermee aangegeven dat de klasse Sling Model kan worden aangepast aan de ComponentExporter interface.

NOTE
Jackson-annotaties worden niet opgegeven op het klasseniveau Sling Model, maar wel op het interfaceniveau Model. Hiermee zorgt u ervoor dat de JSON-export wordt beschouwd als onderdeel van de API voor componenten.
NOTE
De ExporterConstants en ComponentExporter klassen komen uit com.adobe.cq.export.json bundel.

Meerdere kiezers gebruiken multiple-selectors

Hoewel het geen standaard gebruikscase is, is het mogelijk om veelvoudige selecteurs naast te vormen model kiezer.

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

In dat geval echter model moet de eerste kiezer zijn en de extensie moet .json.

De interface van het verkoopmodel notities aanbrengen annotate-the-sling-model-interface

Om door het JSON Exporter-kader in aanmerking te worden genomen, moet de modelinterface de ComponentExporter interface (of ContainerExporter, als er een containercomponent is).

De overeenkomstige interface van het Model van de Verkoop ( MyComponent) wordt vervolgens met behulp van Jackson-annotaties om te bepalen hoe het (geserialiseerd) zou moeten worden uitgevoerd.

De modelinterface moet behoorlijk worden geannoteerd om te bepalen welke methodes zouden moeten in series worden vervaardigd. Standaard worden alle methoden die de gebruikelijke naamgevingsconventie voor getters respecteren, geserialiseerd en worden hun JSON-eigenschapnamen op natuurlijke wijze afgeleid van de namen van getter. Dit kan worden voorkomen of overschreven door @JsonIgnore of @JsonProperty om de naam van de JSON-eigenschap te wijzigen.

Voorbeeld example

De Core Components hebben JSON-export ondersteund sinds de release 1.1.0 van de kerncomponenten en kan als referentie worden gebruikt.

Een voorbeeld vindt u in de implementatie Sling Model van de Image Core-component en de bijbehorende geannoteerde interface.

CODE VOOR GITHUB

U kunt de code van deze pagina op GitHub vinden

Verwante documentatie related-documentation

Raadpleeg de volgende secties voor meer informatie:

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