元件可以根據建模器架構來產生其內容的JSON匯出。
JSON Export是以Sling Models和Sling Model Exporter架構(本身依賴Jackson Annotations)為基礎。
這表示如果元件需要匯出JSON,它必須有Sling Model。 因此,您必須依照這兩個步驟,在任何元件上啟用JSON匯出。
首先,必須為元件定義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的一部分。
ExporterConstants
和ComponentExporter
類來自com.adobe.cq.export.json
包。
雖然不是標準使用案例,但除了model
選擇器外,您仍可設定多個選擇器。
https://<server>:<port>/content/page.model.selector1.selector2.json
但是,在這種情況下,model
選擇器必須是第一個選擇器,而副檔名必須是.json
。
為了讓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上找到此頁面的程式碼
如需詳細資訊,請參閱:
資產使用指南](https://helpx.adobe.com/tw/experience-manager/6-4/assets/user-guide.html?topic=/experience-manager/6-4/assets/morehelp/content-fragments.ug.js)中的[內容片段主題