現在表示中:
- 6.3
- 旧バージョン
注意:
コンポーネントの JSON 書き出し機能は、コンテンツサービス機能パックの一部として使用可能です。
JSON 書き出しは、Sling Models と Sling Model Exporter フレームワーク(それ自体が Jackson 注釈に依存)に基づいています。
つまり、JSON を書き出す必要がある場合、コンポーネントには Sling Model が必要です。そのため、次の 2 つの手順に従って、コンポーネントで JSON 書き出しを有効にする必要があります。
注意:
Sling Model の使用例については、AEM での Sling Model Exporter の開発の記事を参照してください。
@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 バンドルから取得されます。
JSON エクスポーターフレームワークで認識されるようにするには、モデルインターフェイスに ComponentExporter インターフェイス(またはコンテナコンポーネントの場合は ContainerExporter)を実装する必要があります。
対応する Sling Model インターフェイス(MyComponent)には、Jackson 注釈を使用して注釈が付けられ、どのように書き出し(シリアル化)がおこなわれるかが定義されます。
Model インターフェイスには、シリアル化されるメソッドを定義するために適切に注釈を付ける必要があります。デフォルトでは、getter の通常の命名規則に準拠するすべてのメソッドがシリアル化され、JSON プロパティ名が getter 名からそのまま派生されます。これは、@JsonIgnore または @JsonProperty を使用して JSON プロパティの名前を変更することによって、回避または上書きできます。
コアコンポーネントでは、JSON 書き出しがコアコンポーネントのリリース 1.1.0 からサポートされており、参照として使用できます。
例えば、画像コアコンポーネントの Sling Model 実装とその注釈されたインターフェイスを参照してください。
GitHub のコード
このページのコードは GitHub にあります
- GitHub の aem-core-wcm-components プロジェクトを開きます
- プロジェクトを ZIP ファイルとしてダウンロードします