组件可以基于建模器框架生成其内容的JSON导出。
JSON导出基于Sling Models和Sling Model Exporter框架(它本身依赖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的一部分。
ExporterConstants
和ComponentExporter
类来自com.adobe.cq.export.json
包。
尽管不是标准用例,但除了model
选择器外,还可以配置多个选择器。
https://<server>:<port>/content/page.model.selector1.selector2.json
但是,在这种情况下,model
选择器必须是第一个选择器,扩展名必须为.json
。
要由JSON Exporter框架考虑,模型接口应实现ComponentExporter
接口(对于容器组件,为ContainerExporter
)。
然后,将使用Jackson批注对相应的Sling Model接口(MyComponent
)进行注释,以定义如何导出(序列化)它。
需要对“模型”界面进行正确注释,以定义哪些方法应进行序列化。 默认情况下,所有符合getter通常命名惯例的方法都将序列化,并将从getter名称自然地派生其JSON属性名称。 可以使用@JsonIgnore
或@JsonProperty
重命名JSON属性来阻止或覆盖此属性。
核心组 件支持JSON导出,并可用作参考。
有关示例,请参阅图像核心组件及其注释界面的Sling Model实现。
有关更多详细信息,请参阅: