Ativação de exportação em JSON para um componente

Última atualização em 2023-11-17

Os componentes podem ser adaptados para gerar a exportação JSON de seu conteúdo com base em uma estrutura de modelador.

Visão geral

A exportação JSON é baseada em Modelos Slinge no Exportador de modelo Sling quadro regulamentar (que, por sua vez, se baseia Anotações Jackson).

Isso significa que o componente deve ter um Modelo Sling se precisar exportar JSON. Portanto, siga estas duas etapas para ativar a exportação JSON em qualquer componente.

Definir um modelo do Sling para o componente

Primeiro, um modelo Sling deve ser definido para o componente.

OBSERVAÇÃO

Para obter um exemplo do uso de Modelos Sling, consulte o artigo Desenvolvimento de exportadores de modelos de sling no AEM.

A classe de implementação do Modelo do Sling deve ser anotada com o seguinte:

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

Isso garante que seu componente possa ser exportado sozinho, usando o .model seletor e o .json extensão.

Além disso, especifica que a classe Modelo do Sling pode ser adaptada na variável ComponentExporter interface.

OBSERVAÇÃO

As anotações Jackson geralmente não são especificadas no nível de classe do Modelo Sling, mas no nível da interface do Modelo. Isso garante que a Exportação JSON seja considerada como parte da API do componente.

OBSERVAÇÃO

A variável ExporterConstants e ComponentExporter as classes são provenientes da com.adobe.cq.export.json pacote.

Uso de vários seletores

Embora não seja um caso de uso padrão, é possível configurar vários seletores além do model seletor.

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

No entanto, nesse caso, a model seletor deve ser o primeiro seletor e a extensão deve ser .json.

Anotar a interface do modelo Sling

Para ser considerada pela estrutura do Exportador JSON, a interface do Modelo deve implementar a ComponentExporter (ou ContainerExporter, no caso de um componente de contentor).

A interface do modelo Sling correspondente (MyComponent) seria então anotado usando Anotações Jackson para definir como ele deve ser exportado (serializado).

A interface do modelo deve ser anotada corretamente para definir quais métodos devem ser serializados. Por padrão, todos os métodos que respeitam a convenção de nomenclatura usual para getters são serializados e derivarão seus nomes de propriedade JSON naturalmente dos nomes de getter. Isso pode ser evitado ou substituído usando @JsonIgnore ou @JsonProperty para renomear a propriedade JSON.

Exemplo

Os Componentes principais são compatíveis com a exportação JSON e podem ser usados como referência.

Para obter um exemplo, consulte a implementação do Modelo Sling do Componente principal de imagem e sua interface anotada.

Nesta página