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 het Verdelen Modellen, en op het Verschuiven ModelExporterkader (dat zelf op Jackson annotationsvertrouwt).

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 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)

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

Daarnaast geeft dit op 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. Hiermee zorgt u ervoor 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.

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

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

De overeenkomstige het Verdelen Model interface ( MyComponent) zou dan worden geannoteerd gebruikend de annotaties van Jacksonom 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 genegeerd 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 kerncomponentengesteund 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

Raadpleeg de volgende secties voor meer informatie:

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