為元件啟用JSON匯出

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

概覽

JSON匯出以Sling ModelsSling Model Exporter架構(本身需仰賴Jackson註解)為基礎。

這表示如果元件需要匯出JSON,則必須有Sling模型。 因此,您需要依照這兩個步驟,對任何元件啟用JSON匯出。

為元件定義Sling模型

首先,必須為元件定義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匯出器架構考慮,模型介面應實作ComponentExporter介面(若是容器元件,則為ContainerExporter)。

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

需要正確注釋「模型」介面,以定義應序列化哪些方法。 預設情況下,所有遵循getter通常命名慣例的方法都將序列化,並且會從getter名稱自然導出其JSON屬性名稱。 使用@JsonIgnore@JsonProperty來重新命名JSON屬性,可以防止或覆寫此錯誤。

範例

核心元件自🔗核心元件1.1.0版以來,便支援JSON匯出,且可作為參考使用。

如需範例,請參閱影像核心元件及其註解介面的Sling模型實作。

GITHUB上的程式碼

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

如需詳細資訊,請參閱:

本頁內容