為元件啟用JSON匯出

元件可以根據建模器架構來產生其內容的JSON匯出。

概覽

JSON Export是以Sling ModelsSling Model Exporter架構(本身依賴Jackson Annotations)為基礎。

這表示如果元件需要匯出JSON,它必須有Sling Model。 因此,您必須依照這兩個步驟,在任何元件上啟用JSON匯出。

定義元件的Sling模型

首先,必須為元件定義Sling Model。

注意

如需使用Sling Models的範例,請參閱「在AEM中開發Sling Model Exporer」文章

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 Model Interface

為了讓JSON匯出器架構考慮,模型介面應實作ComponentExporter介面(若是容器元件,則為ContainerExporter)。

然後,對應的Sling Model介面(MyComponent)將會使用Jackson Annotations加以註解,以定義應如何匯出(序列化)。

Model介面需要正確加上註解,以定義應序列化哪些方法。 依預設,所有遵循getter通常命名慣例的方法都會序列化,並會自然從getter名稱衍生其JSON屬性名稱。 使用@JsonIgnore@JsonProperty重新命名JSON屬性時,可防止或覆寫此點。

範例

核心元件自1.1.0版核心元件起就支援JSON匯出,可做為參考。

如需範例,請參閱Image Core Component及其註解介面的Sling Model實作。

GITHUB代碼

您可以在GitHub上找到此頁面的程式碼

如需詳細資訊,請參閱:

本頁內容

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
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now