コンポーネントの JSON エクスポートを有効にする enabling-json-export-for-a-component

モデラーフレームワークに基づいてコンテンツの JSON 書き出しを生成するように、コンポーネントを適応させることができます。

概要 overview

JSON の書き出しは、Sling Models と、Sling Model Exporter フレームワーク(それ自体は Jackson 注釈 ​ に依存)に基づいて行われます。

つまり、JSON を書き出す必要がある場合、コンポーネントには Sling モデルが必要です。 したがって、次の 2 つの手順に従って、任意のコンポーネントで JSON 書き出しを有効にします。

コンポーネントに Sling Model を定義する define-a-sling-model-for-the-component

まず、コンポーネントの Sling モデルを定義する必要があります。

NOTE
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 インターフェイスに適応させることができるかどうかを指定します。

NOTE
Jackson 注釈は Sling モデルクラスレベルではなく、モデルインターフェイスレベルで指定されます。このアプローチは、JSON 書き出しが確実にコンポーネント API の一部と見なされるようにするためです。
NOTE
ExporterConstants クラスと ComponentExporter クラスは com.adobe.cq.export.json バンドルから取得されます。

複数のセレクターを使用 multiple-selectors

標準的なユースケースではありませんが、model セレクターに加えて複数のセレクターを設定することができます。

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

ただし、この場合 model セレクターは最初のセレクターで、拡張子は .json にする必要があります。

Sling Model インターフェイスに注釈を付ける annotate-the-sling-model-interface

JSON エクスポーターフレームワークでこれを処理するには、モデルインターフェイスに ComponentExporter インターフェイス(またはコンテナコンポーネントの ContainerExporter)を実装する必要があります。

対応する Sling モデルインターフェイス(MyComponent)には、Jackson 注釈を使用して注釈が付けられ、どのように書き出し(シリアル化)が行われるかが定義されます。

シリアル化するメソッドを定義するには、Model インターフェイスに適切な注釈を付ける必要があります。 デフォルトでは、ゲッターの通常の命名規則に従うすべてのメソッドはシリアル化され、JSON プロパティ名がゲッター名から自然に派生します。 この方法は、@JsonIgnore または @JsonProperty を使用して、JSON プロパティの名前を変更することで、防止または上書きできます。

example

コアコンポーネントは、リリース 1.1.0 以降、JSON 書き出しをサポートしており、参照として使用できます。

例えば、画像コアコンポーネントの Sling Model 実装とその注釈されたインターフェイスを参照してください。

GitHub のコード

このページのコードは GitHub にあります

recommendation-more-help
51c6a92d-a39d-46d7-8e3e-2db9a31c06a2