为组件启用JSON导出

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

概述

JSON导出基于Sling Models,并基于 Sling Model Exporter framework(Sling Model Exporter Framework本身依赖Jackson批注)。

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

为元件定义吊索模型

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

注意

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

Sling Model实现类必须添加以下注释:

@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 Model类级别指定,而是在Model界面级别指定。 这是为了确保将JSON导出视为组件API的一部分。

注意

ExporterConstantsComponentExporter 和课程来自 com.adobe.cq.export.json 捆绑。

使用多个选择器

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

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

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

注释Sling模型界面

要由JSON Exporter框架考虑,模型界面应实 ComponentExporter 现该界 ContainerExporter面(或,对于容器组件)。

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

需要对“模型”界面进行正确注释,以定义哪些方法应进行序列化。 默认情况下,所有符合getter通常命名惯例的方法都将序列化,并将从getter名称自然地派生其JSON属性名称。 使用或重命名JSON属性可 @JsonIgnore 以阻 @JsonProperty 止或覆盖此属性。

示例

核心组件自1.1.0版 起支持JSON导出 ,可用作参考。

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

GITHUB上的代码

您可以在GitHub上找到此页面的代码

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

在此页面上