为组件启用JSON导出

组件可以基于建模器框架进行修改,以生成其内容的JSON导出。

概述

JSON导出基于Sling模型Sling模型导出器框架(该框架本身依赖于Jackson批注)。

这意味着如果组件需要导出JSON,则必须具有Sling模型。 因此,您需要按照以下两个步骤在任何组件上启用JSON导出。

为组件定义Sling模型

首先,必须为组件定义Sling模型。

注意

有关使用Sling模型的示例,请参阅文章在AEM中开发Sling模型导出程序。

Sling模型实施类必须使用以下内容添加注释:

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

这可确保使用.model选择器和.json扩展,自行导出组件。

此外,这还指定Sling Model类可以适应到ComponentExporter接口中。

注意

Jackson批注通常不是在Sling模型类级别指定,而是在模型界面级别指定。 这是为了确保将JSON导出视为组件API的一部分。

注意

ExporterConstantsComponentExporter类来自com.adobe.cq.export.json包。

使用多个选择器

除了model选择器之外,还可以配置多个选择器,但这不是标准用例。

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

但是,在这种情况下,model选择器必须是第一个选择器,并且扩展必须是.json

在Sling模型界面中添加批注

要由JSON导出程序框架考虑,模型界面应实施ComponentExporter接口(对于容器组件,为ContainerExporter)。

随后,将使用Jackson批注对相应的Sling模型界面(MyComponent)进行注释,以定义应如何导出(序列化)该模型。

需要对“模型”(Model)界面进行适当的注释,以定义应序列化哪些方法。 默认情况下,所有遵循getter通用命名约定的方法都将进行序列化,并将从getter名称中自然派生其JSON属性名称。 使用@JsonIgnore@JsonProperty来重命名JSON属性,可以阻止或覆盖此属性。

示例

核心组 件支持JSON导出,并可用作参考。

有关示例,请参阅图像核心组件及其注释界面的Sling模型实施。

有关更多详细信息,请参阅:

在此页面上