Activación de la exportación de JSON para un componente

Los componentes se pueden adaptar para generar la exportación JSON de su contenido en base a un modelo de modelo.

Información general

La exportación de JSON se basa en Modelos Sling y en el marco Exportador de modelo Sling (que se basa en anotaciones Jackson).

Esto significa que el componente debe tener un modelo Sling si necesita exportar JSON. Por lo tanto, deberá seguir estos dos pasos para habilitar la exportación de JSON en cualquier componente.

Definir un modelo Sling para el componente

Primero se debe definir un modelo de Sling para el componente.

NOTA

Para ver un ejemplo del uso de modelos Sling, consulte el artículo Desarrollo de exportadores de modelos Sling en AEM.

La clase de implementación del modelo Sling debe anotarse con lo siguiente:

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

Esto garantiza que el componente se pueda exportar por su cuenta, mediante el selector .model y la extensión .json.

Además, esto especifica que la clase Sling Model se puede adaptar a la interfaz ComponentExporter.

NOTA

Las anotaciones Jackson no suelen especificarse en el nivel de clase del Modelo Sling, sino en el nivel de interfaz del Modelo. Esto sirve para garantizar que la exportación JSON se considere como parte de la API de componente.

NOTA

Las clases ExporterConstants y ComponentExporter provienen del paquete com.adobe.cq.export.json.

Uso de varios selectores

Aunque no es un caso de uso estándar, es posible configurar varios selectores además del selector model.

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

Sin embargo, en este caso el selector model debe ser el primer selector y la extensión debe ser .json.

Anotar la interfaz del modelo Sling

Para que el marco de trabajo del exportador JSON lo tenga en cuenta, la interfaz del modelo debe implementar la interfaz ComponentExporter (o ContainerExporter, en el caso de un componente de contenedor).

La interfaz del Modelo Sling ( MyComponent) correspondiente se anotaría utilizando anotaciones Jackson para definir cómo se debe exportar (serializar).

La interfaz del modelo debe anotarse correctamente para definir qué métodos deben serializarse. De forma predeterminada, todos los métodos que respetan la convención de nombre habitual para captadores se serializarán y derivarán los nombres de propiedades JSON de forma natural de los nombres de captador. Esto se puede evitar o anular con @JsonIgnore o @JsonProperty para cambiar el nombre de la propiedad JSON.

Ejemplo

Los componentes principales admiten la exportación de JSON desde la versión 1.1.0 de los componentes principales y pueden utilizarse como referencia.

Para ver un ejemplo, consulte la implementación del modelo Sling del componente principal de imagen y su interfaz anotada.

CÓDIGO DE GITHUB

Puede encontrar el código de esta página en GitHub

Para obtener más información, consulte:

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free