Show Menu
トピック×

コンポーネントの JSON 書き出しの有効化

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

概要

The JSON Export is based on Sling Models , and on the Sling Model Exporter framework (which itself relies on Jackson annotations ).
つまり、JSON を書き出す必要がある場合、コンポーネントには Sling Model が必要です。そのため、次の 2 つの手順に従って、コンポーネントで JSON 書き出しを有効にする必要があります。

コンポーネントに Sling Model を定義する

まず、コンポーネントに Sling Model を定義する必要があります。
For an example of using Sling Models see the article Developing Sling Model Exporters in AEM .
Sling Model の実装クラスに次のような注釈を付ける必要があります。
@Model(... adapters = {..., ComponentExporter.class})
@Exporter(name = ExporterConstants.SLING_MODEL_EXPORTER_NAME, extensions = ExporterConstants.SLING_MODEL_EXTENSION)
@JsonSerialize(as = MyComponent.class)

This ensures that your component could be exported on its own, using the .model selector and the .json extension.
さらに、Sling Model クラスが ComponentExporter インターフェイスに適応できるように指定されます。
Jackson 注釈は通常 Sling Model クラスレベルではなく、Model インターフェイスレベルで指定されます。これは、JSON 書き出しがコンポーネント API の一部とみなされるようにするためです。
The ExporterConstants and ComponentExporter classes come from the com.adobe.cq.export.json bundle.

複数のセレクターの使用

標準的な使用例ではありませんが、セレクターに加えて複数のセレクターを設定でき model ます。
https://<server>:<port>/content/page.model.selector1.selector2.json

ただし、この場合、 model セレクターは最初のセレクターで、拡張子は必ず指定し .json ます。

Sling Model インターフェイスに注釈を付ける

JSON エクスポーターフレームワークで認識されるようにするには、モデルインターフェイスに ComponentExporter インターフェイス(またはコンテナコンポーネントの場合は ContainerExporter )を実装する必要があります。
The corresponding Sling Model interface ( MyComponent ) would be then annotated using Jackson annotations to define how it should be exported (serialized).
Model インターフェイスには、シリアル化されるメソッドを定義するために適切に注釈を付ける必要があります。デフォルトでは、getter の通常の命名規則に準拠するすべてのメソッドがシリアル化され、JSON プロパティ名が getter 名からそのまま派生されます。This can be prevented or overridden using @JsonIgnore or @JsonProperty to rename the JSON property.

コアコンポーネントでは、JSON 書き出しが コアコンポーネントのリリース 1.1.0 からサポートされており、参照として使用できます。
例えば、画像コアコンポーネントの Sling Model 実装とその注釈されたインターフェイスを参照してください。
GitHub のコード
このページのコードは GitHub にあります