JSON-export inschakelen voor een component

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

Overzicht

De JSON-export is gebaseerd op Sling Models en op het Sling Model Exporter-framework (dat zelf afhankelijk is van Jackson-annotaties).

Dit betekent dat de component een Sling Model moet hebben als het JSON moet uitvoeren. Daarom zult u deze twee stappen moeten volgen om de uitvoer van JSON op om het even welke component toe te laten.

Definieer een Sling-model voor de component

Eerst moet een Sling Model voor de component worden bepaald.

OPMERKING

Zie het artikel Sling Model Exporters ontwikkelen in AEM voor een voorbeeld van het gebruik van Sling Modellen.

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)

Dit zorgt ervoor dat uw component zelfstandig kan worden geëxporteerd met de kiezer .model en de extensie .json.

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

OPMERKING

Jackson-annotaties worden gewoonlijk 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.

OPMERKING

De ExporterConstants en ComponentExporter klassen komen uit de com.adobe.cq.export.json bundel.

Meerdere kiezers gebruiken

Hoewel het geen standaard gebruiksgeval is, is het mogelijk om veelvoudige selecteurs naast model selecteur te vormen.

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 Sling Model Interface

Om door het kader van de Exporteur van JSON in aanmerking te worden genomen, zou de Model interface ComponentExporter interface (of ContainerExporter, in het geval van een containercomponent) moeten uitvoeren.

De overeenkomstige interface van het Schuine model ( MyComponent) zou dan worden geannoteerd gebruikend Jackson annotations 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 met @JsonIgnore of @JsonProperty worden met voeten getreden om het bezit anders te noemen JSON.

Voorbeeld

De kerncomponenten hebben JSON-export ondersteund sinds release 1.1.0 van de kerncomponenten en kunnen 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

Zie voor meer informatie:

Op deze pagina