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 uitvoer JSON is gebaseerd op ​ Verschuivende Modellen ​, en op het ​ Verschuiven ModelExporter ​ kader (dat zelf op ​ Jackson annotations ​ vertrouwt).

Deze benadering 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

Ten eerste moet een Sling-model worden gedefinieerd voor de component.

NOTE
Voor een voorbeeld om het Verdelen Modellen te gebruiken, zie ​ het Ontwikkelen van het Verdelen ModelExporters 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 de component zelfstandig kan worden geëxporteerd met de extensie .model kiezer en .json .

Bovendien wordt hiermee aangegeven dat de klasse Sling Model kan worden aangepast in de interface ComponentExporter .

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

Meerdere kiezers gebruiken multiple-selectors

Hoewel het geen standaard gebruikscase is, is het mogelijk om meerdere kiezers te configureren naast de kiezer van model .

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

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

Annoteer de interface van het Verkoopmodel annotate-the-sling-model-interface

Het JSON Exporter-framework kan dit alleen verwerken als de Model-interface de ComponentExporter -interface (of ContainerExporter voor een containercomponent) implementeert.

De overeenkomstige het Verdelen Model interface ( MyComponent) zou dan worden geannoteerd gebruikend ​ de annotaties van Jackson ​ om te bepalen hoe het (geserialiseerd) zou moeten worden uitgevoerd.

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

Voorbeeld example

De Componenten van de Kern hebben de uitvoer JSON sinds versie ​ 1.1.0 van de kerncomponenten ​ gesteund en kunnen als verwijzing 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

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