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.
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
.
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
- open aem-kern-wcm-componenten project op GitHub
- Download het project als een dossier van het PIT
Verwante documentatie related-documentation
Raadpleeg de volgende secties voor meer informatie: