# mulesoft Json Module - Full Documentation # JSON Module JSON Module v2.1 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes)​ Exchange: [JSON Module](https://www.mulesoft.com/exchange/org.mule.modules/mule-json-module/) ## [](#関連情報)関連情報 - [JSON Module を使用した JSON スキーマに対するドキュメントの検証](https://docs.mulesoft.com/jp/json-module/2.1/json-schema-validation) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.1/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module JSON Module v2.2 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes)​ Exchange: [JSON Module](https://www.mulesoft.com/exchange/org.mule.modules/mule-json-module/) ## [](#関連情報)関連情報 - [JSON Module を使用した JSON スキーマに対するドキュメントの検証](https://docs.mulesoft.com/jp/json-module/2.2/json-schema-validation) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.2/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module JSON Module v2.3 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes)​ Exchange: [JSON Module](https://www.mulesoft.com/exchange/org.mule.modules/mule-json-module/) ## [](#関連情報)関連情報 - [JSON Module を使用した JSON スキーマに対するドキュメントの検証](https://docs.mulesoft.com/jp/json-module/2.3/json-schema-validation) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.3/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module JSON Module v2.4 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes)​ Exchange: [JSON Module](https://www.mulesoft.com/exchange/org.mule.modules/mule-json-module/) ## [](#関連情報)関連情報 - [JSON Module を使用した JSON スキーマに対するドキュメントの検証](https://docs.mulesoft.com/jp/json-module/2.4/json-schema-validation) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.4/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module JSON Module v2.5 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes)​ Exchange: [JSON Module](https://www.mulesoft.com/exchange/org.mule.modules/mule-json-module/) ## [](#関連情報)関連情報 - [JSON Module を使用した JSON スキーマに対するドキュメントの検証](https://docs.mulesoft.com/jp/json-module/latest/json-schema-validation) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/latest/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.modules mule-json-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`json module`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.modules mule-json-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`json module`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.modules mule-json-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`json module`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.modules mule-json-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`json module`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.modules mule-json-module x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`json module`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module のトラブルシューティング JSON Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと JSON Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - JSON:INVALID\_INPUT\_JSON 入力ドキュメントが有効な JSON ではありません。 - JSON:INVALID\_SCHEMA 指定されたスキーマが無効です。 - JSON:SCHEMA\_NOT\_FOUND スキーマが見つかりませんでした。 - JSON:SCHEMA\_NOT\_HONOURED 入力 JSON ドキュメントがそのスキーマに準拠していません。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.1/json-reference) # JSON Module のトラブルシューティング JSON Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと JSON Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#末尾の文字を含む無効な-json-ペイロードのトラブルシューティング)末尾の文字を含む無効な JSON ペイロードのトラブルシューティング JSON Module の ​**Validate schema**​ 操作で、末尾の文字を含む無効な JSON ペイロードが正しく検出されるようになりました。 これは、コネクタで使用される Jackson ライブラリではデフォルトの動作ではないため、これを行うには、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を検証に追加する必要があります。 1. Studio で ​**\[Run (実行)\] > \[Run configurations…​ (設定を実行…​)\]**​ に移動します。 2. **\[Run Configurations (設定を実行)\]**​ 画面の最初の列で ​**\[Mule Applications (Mule アプリケーション)\]**​ を選択します。 3. **\[(X)= Arguments ((X)= 引数)\]**​ タブをクリックします。 4. **\[VM arguments (VM 引数)\]**​ ボックスで、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を追加します。 ![「VM arguments (VM 引数)」 ボックスに追加されたシステムプロパティ](/mulesoft/current/ja-jp/json-module/2.2/_images/json-system.png) ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - JSON:INVALID\_INPUT\_JSON 入力ドキュメントが有効な JSON ではありません。 - JSON:INVALID\_SCHEMA 指定されたスキーマが無効です。 - JSON:SCHEMA\_NOT\_FOUND スキーマが見つかりませんでした。 - JSON:SCHEMA\_NOT\_HONOURED 入力 JSON ドキュメントがそのスキーマに準拠していません。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.2/json-reference) # JSON Module のトラブルシューティング JSON Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと JSON Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#末尾の文字を含む無効な-json-ペイロードのトラブルシューティング)末尾の文字を含む無効な JSON ペイロードのトラブルシューティング JSON Module の ​**Validate schema**​ 操作で、末尾の文字を含む無効な JSON ペイロードが正しく検出されるようになりました。 これは、コネクタで使用される Jackson ライブラリではデフォルトの動作ではないため、これを行うには、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を検証に追加する必要があります。 1. Studio で ​**\[Run (実行)\] > \[Run configurations…​ (設定を実行…​)\]**​ に移動します。 2. **\[Run Configurations (設定を実行)\]**​ 画面の最初の列で ​**\[Mule Applications (Mule アプリケーション)\]**​ を選択します。 3. **\[(X)= Arguments ((X)= 引数)\]**​ タブをクリックします。 4. **\[VM arguments (VM 引数)\]**​ ボックスで、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を追加します。 ![「VM arguments (VM 引数)」 ボックスに追加されたシステムプロパティ](/mulesoft/current/ja-jp/json-module/2.3/_images/json-system.png) ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - JSON:INVALID\_INPUT\_JSON 入力ドキュメントが有効な JSON ではありません。 - JSON:INVALID\_SCHEMA 指定されたスキーマが無効です。 - JSON:SCHEMA\_NOT\_FOUND スキーマが見つかりませんでした。 - JSON:SCHEMA\_NOT\_HONOURED 入力 JSON ドキュメントがそのスキーマに準拠していません。 - JSON:SCHEMA\_INPUT\_ERROR 操作の実行時に \[Schema (スキーマ)\] と \[SchemaContent\] の両方の項目が同時に使用されたため、Validate schema 操作が失敗しました。スキーマ XSD コンテンツの検証には、これらのいずれかの項目のみを使用できます。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.3/json-reference) # JSON Module のトラブルシューティング JSON Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと JSON Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#末尾の文字を含む無効な-json-ペイロードのトラブルシューティング)末尾の文字を含む無効な JSON ペイロードのトラブルシューティング JSON Module の ​**Validate schema**​ 操作で、末尾の文字を含む無効な JSON ペイロードが正しく検出されるようになりました。 これは、コネクタで使用される Jackson ライブラリではデフォルトの動作ではないため、これを行うには、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を検証に追加する必要があります。 1. Studio で ​**\[Run (実行)\] > \[Run configurations…​ (設定を実行…​)\]**​ に移動します。 2. **\[Run Configurations (設定を実行)\]**​ 画面の最初の列で ​**\[Mule Applications (Mule アプリケーション)\]**​ を選択します。 3. **\[(X)= Arguments ((X)= 引数)\]**​ タブをクリックします。 4. **\[VM arguments (VM 引数)\]**​ ボックスで、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を追加します。 ![「VM arguments (VM 引数)」 ボックスに追加されたシステムプロパティ](/mulesoft/current/ja-jp/json-module/2.4/_images/json-system.png) ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - JSON:INVALID\_INPUT\_JSON 入力ドキュメントが有効な JSON ではありません。 - JSON:INVALID\_SCHEMA 指定されたスキーマが無効です。 - JSON:SCHEMA\_NOT\_FOUND スキーマが見つかりませんでした。 - JSON:SCHEMA\_NOT\_HONOURED 入力 JSON ドキュメントがそのスキーマに準拠していません。 - JSON:SCHEMA\_INPUT\_ERROR 操作の実行時に \[Schema (スキーマ)\] と \[SchemaContent\] の両方の項目が同時に使用されたため、Validate schema 操作が失敗しました。スキーマ XSD コンテンツの検証には、これらのいずれかの項目のみを使用できます。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/2.4/json-reference) # JSON Module のトラブルシューティング JSON Module のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと JSON Module のやりとりが失敗する理由の理解を深めるには、モジュールの冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#末尾の文字を含む無効な-json-ペイロードのトラブルシューティング)末尾の文字を含む無効な JSON ペイロードのトラブルシューティング JSON Module の ​**Validate schema**​ 操作で、末尾の文字を含む無効な JSON ペイロードが正しく検出されるようになりました。 これは、コネクタで使用される Jackson ライブラリではデフォルトの動作ではないため、これを行うには、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を検証に追加する必要があります。 1. Studio で ​**\[Run (実行)\] > \[Run configurations…​ (設定を実行…​)\]**​ に移動します。 2. **\[Run Configurations (設定を実行)\]**​ 画面の最初の列で ​**\[Mule Applications (Mule アプリケーション)\]**​ を選択します。 3. **\[(X)= Arguments ((X)= 引数)\]**​ タブをクリックします。 4. **\[VM arguments (VM 引数)\]**​ ボックスで、システムプロパティ ​`-DjsonSchemaValidator.FailOnTrailingTokens=true`​ を追加します。 ![「VM arguments (VM 引数)」 ボックスに追加されたシステムプロパティ](/mulesoft/current/ja-jp/json-module/latest/_images/json-system.png) ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - JSON:INVALID\_INPUT\_JSON 入力ドキュメントが有効な JSON ではありません。 - JSON:INVALID\_SCHEMA 指定されたスキーマが無効です。 - JSON:SCHEMA\_NOT\_FOUND スキーマが見つかりませんでした。 - JSON:SCHEMA\_NOT\_HONOURED 入力 JSON ドキュメントがそのスキーマに準拠していません。 - JSON:SCHEMA\_INPUT\_ERROR 操作の実行時に \[Schema (スキーマ)\] と \[SchemaContent\] の両方の項目が同時に使用されたため、Validate schema 操作が失敗しました。スキーマ XSD コンテンツの検証には、これらのいずれかの項目のみを使用できます。 ## [](#関連情報)関連情報 - [JSON Module リファレンス](https://docs.mulesoft.com/jp/json-module/latest/json-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [Known Issues](https://help.salesforce.com/s/issues) # JSON Module リファレンス JSON Module v2.1 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

## [](#操作)操作 ### [](#validateSchema)Validate Schema `` 入力コンテンツが指定したスキーマに準拠していることを検証します。この操作では、相互を含む多数のスキーマの参照がサポートされます (カンマを区切り文字に使用)。
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
#### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Schema (スキーマ)

String (文字列)

検証の基準になるスキーマがある場所。この属性は、「​http://org.mule/schema.json​」や「resource:/schema.json」などの URI 表現をサポートします。また、単なる「schema.json」など、ごく一般的なクラスパス参照の大半もサポートします。

x

Content (コンテンツ)

Any (任意)

検証される JSON ドキュメント。

#[payload]

Schema Redirects (スキーマのリダイレクト)

Schema Redirect​ の配列

スキーマの指定した URI (あるいはスキーマの場所自体) を他の特定の URI にリダイレクトできます。この機能の最も一般的なユースケースは、ローカルリソースなしに、外部の名前空間 URI をマップすることです。

Dereferencing (参照解決)

Enumeration (列挙)。次のいずれかになります。

  • CANONICAL

  • INLINE

Draft v4 では、正規とインラインの 2 つの参照解決モードが定義されています。CANONICAL (正規) がデフォルトのオプションですが、INLINE (インライン) も指定できます。V3 ドラフトを検証するときは、この属性が無視されます。

CANONICAL

Allow Duplicate Keys (重複キーの許可)

Boolean (ブール)

true の場合、バリデーターで重複するキーが許可されます。それ以外の場合は、検証に失敗します。

true

#### [](#スロー)スロー - JSON:INVALID\_INPUT\_JSON - JSON:INVALID\_SCHEMA - JSON:SCHEMA\_NOT\_FOUND - JSON:SCHEMA\_NOT\_HONOURED ## [](#型)型 ### [](#SchemaRedirect)Schema Redirect
項目 型 説明 デフォルト値 必須

From (送信元)

String (文字列)

元の場所。

x

To (宛先)

String (文字列)

リダイレクトする場所。

x

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module リファレンス JSON Module v2.2 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

## [](#操作)操作 ### [](#validateSchema)Validate Schema `` 入力コンテンツが指定したスキーマに準拠していることを検証します。この操作では、相互を含む多数のスキーマの参照がサポートされます (カンマを区切り文字に使用)。
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
#### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Schema (スキーマ)

String (文字列)

検証の基準になるスキーマがある場所。この属性は、「​http://org.mule/schema.json​」や「resource:/schema.json」などの URI 表現をサポートします。また、単なる「schema.json」など、ごく一般的なクラスパス参照の大半もサポートします。

x

Content (コンテンツ)

Any (任意)

検証される JSON ドキュメント。

#[payload]

Schema Redirects (スキーマのリダイレクト)

Schema Redirect​ の配列

スキーマの指定した URI (あるいはスキーマの場所自体) を他の特定の URI にリダイレクトできます。この機能の最も一般的なユースケースは、ローカルリソースなしに、外部の名前空間 URI をマップすることです。

Dereferencing (参照解決)

Enumeration (列挙)。次のいずれかになります。

  • CANONICAL

  • INLINE

Draft v4 では、正規とインラインの 2 つの参照解決モードが定義されています。CANONICAL (正規) がデフォルトのオプションですが、INLINE (インライン) も指定できます。V3 ドラフトを検証するときは、この属性が無視されます。

CANONICAL

Allow Duplicate Keys (重複キーの許可)

Boolean (ブール)

true の場合、バリデーターで重複するキーが許可されます。それ以外の場合は、検証に失敗します。

true

#### [](#スロー)スロー - JSON:INVALID\_INPUT\_JSON - JSON:INVALID\_SCHEMA - JSON:SCHEMA\_NOT\_FOUND - JSON:SCHEMA\_NOT\_HONOURED ## [](#型)型 ### [](#SchemaRedirect)Schema Redirect
項目 型 説明 デフォルト値 必須

From (送信元)

String (文字列)

元の場所。

x

To (宛先)

String (文字列)

リダイレクトする場所。

x

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module リファレンス JSON Module v2.3 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

## [](#操作)操作 ### [](#validateSchema)Validate Schema `` 入力コンテンツが指定したスキーマに準拠していることを検証します。この操作では、相互を含む多数のスキーマの参照がサポートされます (カンマを区切り文字に使用)。
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
#### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Content (コンテンツ)

Any (任意)

検証する JSON ドキュメント。

#[payload]

Schema Redirects (スキーマのリダイレクト)

​Schema Redirect​ の配列

スキーマの指定した URI (あるいはスキーマの場所自体) を他の特定の URI にリダイレクトできます。この機能の最も一般的なユースケースは、ローカルリソースなしに、外部の名前空間 URI をマップすることです。

Dereferencing (参照解決)

Enumeration (列挙)。次のいずれかになります。 CANONICAL INLINE

Draft v4 では、正規とインラインの 2 つの参照解決モードが定義されています。CANONICAL がデフォルトのオプションですが、INLINE を指定することもできます。Draft v3 を検証するときは、この属性が無視されます。

CANONICAL

Allow Duplicate Keys (重複キーの許可)

Boolean (ブール)

true の場合、true の場合、バリデーターで重複するキーが許可されます。それ以外の場合は、検証に失敗します。

true

Allow Arbitrary Precision (任意の精度を許可)

Boolean (ブール)

true の場合、浮動小数点値を読み取るときにバリデーターで任意の精度が使用されます。それ以外の場合は、倍精度浮動小数点数が使用されます。

false

Schema (スキーマ)

String (文字列)

検証する validate schema の場所。この属性は、「http://org.mule/schema.json」や「resource:/schema.json」などの URI 表現をサポートします。また、単なる「schema.json」など、ごく一般的なクラスパス参照の大半もサポートします。

SchemaContent

String (文字列)

検証するスキーマのテキスト形式のコンテンツ。

#### [](#スロー)スロー - JSON:INVALID\_INPUT\_JSON - JSON:INVALID\_SCHEMA - JSON:SCHEMA\_NOT\_FOUND - JSON:SCHEMA\_NOT\_HONOURED - JSON:SCHEMA\_INPUT\_ERROR ## [](#型)型 ### [](#SchemaRedirect)Schema Redirect
項目 型 説明 デフォルト値 必須

From (送信元)

String (文字列)

元の場所。

x

To (宛先)

String (文字列)

リダイレクトする場所。

x

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module リファレンス JSON Module v2.4 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

## [](#操作)操作 ### [](#validateSchema)Validate Schema `` 入力コンテンツが指定したスキーマに準拠していることを検証します。この操作では、相互を含む多数のスキーマの参照がサポートされます (カンマを区切り文字に使用)。
JSON ​Validate schema​ 操作では、スキーマバージョン Draft 3、Draft 4、Draft 6、Draft 7、Draft 2019-09、Draft 2020-12 がサポートされています。JSON スキーマノードでドラフトバージョンを指定しない場合のデフォルトバージョンは Draft 04 です。
#### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Content (コンテンツ)

Any (任意)

検証する JSON ドキュメント。

#[payload]

Schema Redirects (スキーマのリダイレクト)

​Schema Redirect​ の配列

スキーマの指定した URI (あるいはスキーマの場所自体) を他の特定の URI にリダイレクトできます。この機能の最も一般的なユースケースは、ローカルリソースなしに、外部の名前空間 URI をマップすることです。

Dereferencing (参照解決)

Enumeration (列挙)。次のいずれかになります。 CANONICAL INLINE

Draft v4 では、正規とインラインの 2 つの参照解決モードが定義されています。CANONICAL がデフォルトのオプションですが、INLINE を指定することもできます。この項目は、Draft v4 を使用する場合にのみ影響します。

CANONICAL

Allow Duplicate Keys (重複キーの許可)

Boolean (ブール)

true の場合、true の場合、バリデーターで重複するキーが許可されます。それ以外の場合は、検証に失敗します。

true

Allow Arbitrary Precision (任意の精度を許可)

Boolean (ブール)

true の場合、浮動小数点値を読み取るときにバリデーターで任意の精度が使用されます。それ以外の場合は、倍精度浮動小数点数が使用されます。

false

Schema (スキーマ)

String (文字列)

検証する validate schema の場所。この属性は、「http://org.mule/schema.json」や「resource:/schema.json」などの URI 表現をサポートします。また、単なる「schema.json」など、ごく一般的なクラスパス参照の大半もサポートします。

SchemaContent

String (文字列)

検証するスキーマのテキスト形式のコンテンツ。

#### [](#スロー)スロー - JSON:INVALID\_INPUT\_JSON - JSON:INVALID\_SCHEMA - JSON:SCHEMA\_NOT\_FOUND - JSON:SCHEMA\_NOT\_HONOURED - JSON:SCHEMA\_INPUT\_ERROR ## [](#型)型 ### [](#SchemaRedirect)Schema Redirect
項目 型 説明 デフォルト値 必須

From (送信元)

String (文字列)

元の場所。

x

To (宛先)

String (文字列)

リダイレクトする場所。

x

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module リファレンス JSON Module v2.5 JSON Module では、JSON ドキュメントを処理する追加機能を使用できます。DataWeave は Mule が JSON ドキュメントのデータへのアクセスに使用するツールですが、このモジュールはスキーマ検証など、DataWeave のスコープを超えた追加機能を備えています。 リリースノート: [JSON Module リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/json-module-release-notes) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

## [](#操作)操作 ### [](#validateSchema)Validate Schema `` 入力コンテンツが指定したスキーマに準拠していることを検証します。この操作では、相互を含む多数のスキーマの参照がサポートされます (カンマを区切り文字に使用)。
JSON ​Validate schema​ 操作では、スキーマバージョン Draft 3、Draft 4、Draft 6、Draft 7、Draft 2019-09、Draft 2020-12 がサポートされています。JSON スキーマノードでドラフトバージョンを指定しない場合のデフォルトバージョンは Draft 04 です。
#### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Content (コンテンツ)

Any (任意)

検証する JSON ドキュメント。

#[payload]

Schema Redirects (スキーマのリダイレクト)

​Schema Redirect​ の配列

スキーマの指定した URI (あるいはスキーマの場所自体) を他の特定の URI にリダイレクトできます。この機能の最も一般的なユースケースは、ローカルリソースなしに、外部の名前空間 URI をマップすることです。

Dereferencing (参照解決)

Enumeration (列挙)。次のいずれかになります。 CANONICAL INLINE

Draft v4 では、正規とインラインの 2 つの参照解決モードが定義されています。CANONICAL がデフォルトのオプションですが、INLINE を指定することもできます。この項目は、Draft v4 を使用する場合にのみ影響します。

CANONICAL

Allow Duplicate Keys (重複キーの許可)

Boolean (ブール)

true の場合、true の場合、バリデーターで重複するキーが許可されます。それ以外の場合は、検証に失敗します。

true

Allow Arbitrary Precision (任意の精度を許可)

Boolean (ブール)

true の場合、浮動小数点値を読み取るときにバリデーターで任意の精度が使用されます。それ以外の場合は、倍精度浮動小数点数が使用されます。

false

Schema (スキーマ)

String (文字列)

検証する validate schema の場所。この属性は、「http://org.mule/schema.json」や「resource:/schema.json」などの URI 表現をサポートします。また、単なる「schema.json」など、ごく一般的なクラスパス参照の大半もサポートします。

SchemaContent

String (文字列)

検証するスキーマのテキスト形式のコンテンツ。

#### [](#スロー)スロー - JSON:INVALID\_INPUT\_JSON - JSON:INVALID\_SCHEMA - JSON:SCHEMA\_NOT\_FOUND - JSON:SCHEMA\_NOT\_HONOURED - JSON:SCHEMA\_INPUT\_ERROR ## [](#型)型 ### [](#SchemaRedirect)Schema Redirect
項目 型 説明 デフォルト値 必須

From (送信元)

String (文字列)

元の場所。

x

To (宛先)

String (文字列)

リダイレクトする場所。

x

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # JSON Module を使用した JSON スキーマに対するドキュメントの検証 ``​ 操作は、入力コンテンツが指定した JSON スキーマに準拠していることを検証します。 ```xml ```
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
この操作はデフォルトで、メッセージペイロードレベルで入力ドキュメントを検索します。他方、次のような独自の入力を行うこともできます。 ```xml #[vars.jsonDoc] ``` ``​ 要素内の ​``​ コンポーネントを使用できます。 ## [](#検証エラーの処理)検証エラーの処理 検証に成功した場合は何も起こらず、フローの次の操作に進みます。失敗した場合は、​`JSON:SCHEMA_NOT_HONOURED`​ エラーが生じます。 `JSON:SCHEMA_NOT_HONOURED`​ は複雑なエラーです。検証は複数の理由で失敗する可能性があるため、エラーにはオブジェクトの JSON 配列が記載されます。これらのオブジェクトごとに、検出された各エラーに関する情報が示されます。 たとえば、次の入力 JSON について考えてみます。 無効な JSON ```json [ {"a": "", "b": ""}, {"a": "", "b": ""}, {"a":""}, {"a": "", "b":""}, {"b": ""} ] ``` そして、JSON スキーマが次のとおりであるとします。 JSON スキーマ ```json { "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "a": { "type": "string", "minLength": 1, "maxLength": 255 }, "b": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": ["a", "b"] } } ``` ご覧のとおり、​`a`​ と ​`b`​ のどちらの文字列属性も必須で、双方とも 1 文字以上にする必要があるため、この入力 JSON は無効です。 ユースケースで検証を実行して失敗した場合に、レポートをファイルに追加するには、以下のようにすることができます。 ```xml #[error.errorMessage.payload] ``` ファイルに追加されるテキストは次のようになります。 ```json [ { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/0/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/0/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/1/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/1/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/2" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"b\"])", "required" : [ "a", "b" ], "missing" : [ "b" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/2/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/3/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/3/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/4" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"a\"])", "required" : [ "a", "b" ], "missing" : [ "a" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/4/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 } ] ``` ## [](#スキーマのリダイレクト)スキーマのリダイレクト JSON スキーマの中には、公開 URI を介して他のスキーマを参照するものがあります。けれども、主としてパフォーマンスやセキュリティ上の理由から、これらのスキーマをインターネットから取得したくないことがあります。 この問題の解決法は、メインスキーマと参照スキーマをすべてアプリケーションに含めることです。ただし、この解決法によって新たな問題が生じます。元のスキーマに、公開スキーマではなく、ローカルスキーマをポイントさせる必要があることです。 この問題に対処するために、このモジュールではスキーマのリダイレクトという概念が導入され、スキーマ自体を変更しなくても、外部参照をローカル参照に置換することができます。 ```xml ``` 上記の例では、​`[http://mule.org/schemas/fstab.json](http://mule.org/schemas/fstab.json)`​ のスキーマが、アプリケーション内に付属する、​`schema/fstab.json`​ というパスのスキーマにリダイレクトされます。 ## [](#追加オプション)追加オプション バリデーターには、重複キーを許可するかどうか、参照解決をどのように処理するかなどの追加オプションがあります。 詳細は、​[「JSON Module ドキュメントリファレンス」](https://docs.mulesoft.com/jp/json-module/2.1/json-reference)​を参照してください。 ## [](#関連情報)関連情報 - [JSON Module の概要](https://docs.mulesoft.com/jp/json-module/2.1/) # JSON Module を使用した JSON スキーマに対するドキュメントの検証 ``​ 操作は、入力コンテンツが指定した JSON スキーマに準拠していることを検証します。 ```xml ```
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
この操作はデフォルトで、メッセージペイロードレベルで入力ドキュメントを検索します。他方、次のような独自の入力を行うこともできます。 ```xml #[vars.jsonDoc] ``` ``​ 要素内の ​``​ コンポーネントを使用できます。 ## [](#検証エラーの処理)検証エラーの処理 検証に成功した場合は何も起こらず、フローの次の操作に進みます。失敗した場合は、​`JSON:SCHEMA_NOT_HONOURED`​ エラーが生じます。 `JSON:SCHEMA_NOT_HONOURED`​ は複雑なエラーです。検証は複数の理由で失敗する可能性があるため、エラーにはオブジェクトの JSON 配列が記載されます。これらのオブジェクトごとに、検出された各エラーに関する情報が示されます。 たとえば、次の入力 JSON について考えてみます。 無効な JSON ```json [ {"a": "", "b": ""}, {"a": "", "b": ""}, {"a":""}, {"a": "", "b":""}, {"b": ""} ] ``` そして、JSON スキーマが次のとおりであるとします。 JSON スキーマ ```json { "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "a": { "type": "string", "minLength": 1, "maxLength": 255 }, "b": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": ["a", "b"] } } ``` ご覧のとおり、​`a`​ と ​`b`​ のどちらの文字列属性も必須で、双方とも 1 文字以上にする必要があるため、この入力 JSON は無効です。 ユースケースで検証を実行して失敗した場合に、レポートをファイルに追加するには、以下のようにすることができます。 ```xml #[error.errorMessage.payload] ``` ファイルに追加されるテキストは次のようになります。 ```json [ { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/0/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/0/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/1/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/1/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/2" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"b\"])", "required" : [ "a", "b" ], "missing" : [ "b" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/2/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/3/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/3/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/4" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"a\"])", "required" : [ "a", "b" ], "missing" : [ "a" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/4/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 } ] ``` ## [](#スキーマのリダイレクト)スキーマのリダイレクト JSON スキーマの中には、公開 URI を介して他のスキーマを参照するものがあります。けれども、主としてパフォーマンスやセキュリティ上の理由から、これらのスキーマをインターネットから取得したくないことがあります。 この問題の解決法は、メインスキーマと参照スキーマをすべてアプリケーションに含めることです。ただし、この解決法によって新たな問題が生じます。元のスキーマに、公開スキーマではなく、ローカルスキーマをポイントさせる必要があることです。 この問題に対処するために、このモジュールではスキーマのリダイレクトという概念が導入され、スキーマ自体を変更しなくても、外部参照をローカル参照に置換することができます。 ```xml ``` 上記の例では、​`[http://mule.org/schemas/fstab.json](http://mule.org/schemas/fstab.json)`​ のスキーマが、アプリケーション内に付属する、​`schema/fstab.json`​ というパスのスキーマにリダイレクトされます。 ## [](#追加オプション)追加オプション バリデーターには、重複キーを許可するかどうか、参照解決をどのように処理するかなどの追加オプションがあります。 詳細は、​[「JSON Module ドキュメントリファレンス」](https://docs.mulesoft.com/jp/json-module/2.2/json-reference)​を参照してください。 ## [](#関連情報)関連情報 - [JSON Module の概要](https://docs.mulesoft.com/jp/json-module/2.2/) # JSON Module を使用した JSON スキーマに対するドキュメントの検証 ``​ 操作は、入力コンテンツが指定した JSON スキーマに準拠していることを検証します。 ```xml ```
このコネクタでは JSON スキーマ検証のドラフト 3 および 4 のみがサポートされます。
この操作はデフォルトで、メッセージペイロードレベルで入力ドキュメントを検索します。他方、次のような独自の入力を行うこともできます。 ```xml #[vars.jsonDoc] ``` ``​ 要素内の ​``​ コンポーネントを使用できます。 ## [](#検証エラーの処理)検証エラーの処理 検証に成功した場合は何も起こらず、フローの次の操作に進みます。失敗した場合は、​`JSON:SCHEMA_NOT_HONOURED`​ エラーが生じます。 `JSON:SCHEMA_NOT_HONOURED`​ は複雑なエラーです。検証は複数の理由で失敗する可能性があるため、エラーにはオブジェクトの JSON 配列が記載されます。これらのオブジェクトごとに、検出された各エラーに関する情報が示されます。 たとえば、次の入力 JSON について考えてみます。 無効な JSON ```json [ {"a": "", "b": ""}, {"a": "", "b": ""}, {"a":""}, {"a": "", "b":""}, {"b": ""} ] ``` そして、JSON スキーマが次のとおりであるとします。 JSON スキーマ ```json { "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "a": { "type": "string", "minLength": 1, "maxLength": 255 }, "b": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": ["a", "b"] } } ``` ご覧のとおり、​`a`​ と ​`b`​ のどちらの文字列属性も必須で、双方とも 1 文字以上にする必要があるため、この入力 JSON は無効です。 ユースケースで検証を実行して失敗した場合に、レポートをファイルに追加するには、以下のようにすることができます。 ```xml #[error.errorMessage.payload] ``` ファイルに追加されるテキストは次のようになります。 ```json [ { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/0/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/0/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/1/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/1/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/2" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"b\"])", "required" : [ "a", "b" ], "missing" : [ "b" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/2/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/3/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/3/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/4" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"a\"])", "required" : [ "a", "b" ], "missing" : [ "a" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/4/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 } ] ``` ## [](#スキーマのリダイレクト)スキーマのリダイレクト JSON スキーマの中には、公開 URI を介して他のスキーマを参照するものがあります。けれども、主としてパフォーマンスやセキュリティ上の理由から、これらのスキーマをインターネットから取得したくないことがあります。 この問題の解決法は、メインスキーマと参照スキーマをすべてアプリケーションに含めることです。ただし、この解決法によって新たな問題が生じます。元のスキーマに、公開スキーマではなく、ローカルスキーマをポイントさせる必要があることです。 この問題に対処するために、このモジュールではスキーマのリダイレクトという概念が導入され、スキーマ自体を変更しなくても、外部参照をローカル参照に置換することができます。 ```xml ``` 上記の例では、​`[http://mule.org/schemas/fstab.json](http://mule.org/schemas/fstab.json)`​ のスキーマが、アプリケーション内に付属する、​`schema/fstab.json`​ というパスのスキーマにリダイレクトされます。 ## [](#追加オプション)追加オプション バリデーターには、重複キーを許可するかどうか、参照解決をどのように処理するかなどの追加オプションがあります。 詳細は、​[「JSON Module ドキュメントリファレンス」](https://docs.mulesoft.com/jp/json-module/2.3/json-reference)​を参照してください。 ## [](#スキーマコンテンツを設定する)スキーマコンテンツを設定する 次の例では、​**Validate schema**​ 操作の ​**\[Schema Content (スキーマコンテンツ)\]**​ 項目を設定します。この項目に、検証するスキーマテキストコンテンツを入力します。
スキーマコンテンツを追加するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​[Schema (スキーマ)]​ 項目でファイルをアップロードするか、​[Schema content (スキーマコンテンツ)]​ 項目でダイレクトスキーマテキストコンテンツを手動で追加できます。
1. Studio で、フローから ​**\[Validate Schema\]**​ 操作を選択します。 2. **\[Schema Content (スキーマコンテンツ)\]**​ 項目に、次のようなに検証するコンテンツを入力します。 ```xml { “$schema”: “http://json-schema.org/draft-04/schema#”, “type”: “array”, “items”: { “type”: “object”, “properties”: { “a”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 }, “b”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 } }, “not”: {“required”:[“c”]} } } ``` ![検証するスキーマコンテンツが設定された \[Schema content (スキーマコンテンツ)\] 項目](_images/json-schema-content-1.png) ## [](#関連情報)関連情報 - [JSON Module の概要](https://docs.mulesoft.com/jp/json-module/2.3/) # JSON Module を使用した JSON スキーマに対するドキュメントの検証 JSON Module の ​**Validate schema**​ 操作 (​``​) は、入力コンテンツが指定した JSON スキーマに準拠していることを検証します。
サポートされるスキーマバージョンは、Draft 3、Draft 4、Draft 6、Draft 7、Draft 2019-09、Draft 2020-12 です。Draft 3 および 4 のペイロード応答はその他のドラフトとは異なります。 大量の JSON ファイルを読み込むと、操作でメモリの制約が発生する可能性があります。
## [](#studio-で-validate-schema-操作設定する)Studio で Validate Schema 操作設定する **Validate schema**​ 操作は、メッセージペイロードレベルで入力ドキュメントを検索します。ただし、独自の入力を行うこともできます。スキーマコンテンツを検証するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​**\[Schema (スキーマ)\]**​ 項目でファイルをアップロードするか、​**\[Schema content (スキーマコンテンツ)\]**​ 項目でダイレクトスキーマテキストコンテンツを手動で追加できます。次の例は、Anypoint Studio で操作を設定する方法を示しています。 1. Studio のフローで、​**\[File Read\]**​ 操作をキャンバスにドラッグします。 2. **\[Path (パス)\]**​ を ​`document.json`​ に設定します。 3. **\[Target (対象)\]**​ を ​`jsonDoc`​ に設定します。 4. **\[Validate schema\]**​ 操作を ​**\[Read\]**​ 操作の横側にドラッグします。 5. **\[Schema (スキーマ)\]**​ を ​`/schema/my-schema.json`​ に設定します。 **設定 XML**​ エディターでは、​``​ 設定は次のように記述されます。 ```xml ``` Validation Module の ​**All**​ 操作 (​``​) 内で ​**Validate schema**​ 操作 (​``​) を使用できます。 ### [](#スキーマコンテンツを設定する)スキーマコンテンツを設定する 次の例では、​**Validate schema**​ 操作の ​**\[Schema Content (スキーマコンテンツ)\]**​ 項目を設定します。この項目に、検証するスキーマテキストコンテンツを入力します。
スキーマコンテンツを追加するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​[Schema (スキーマ)]​ 項目でファイルをアップロードするか、​[Schema content (スキーマコンテンツ)]​ 項目でダイレクトスキーマテキストコンテンツを手動で追加できます。
1. Studio で、フローから ​**\[Validate Schema\]**​ 操作を選択します。 2. **\[Schema Content (スキーマコンテンツ)\]**​ 項目に、次のようなに検証するコンテンツを入力します。 ```xml { “$schema”: “http://json-schema.org/draft-04/schema#”, “type”: “array”, “items”: { “type”: “object”, “properties”: { “a”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 }, “b”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 } }, “not”: {“required”:[“c”]} } } ``` ![検証するスキーマコンテンツが設定された \[Schema content (スキーマコンテンツ)\] 項目](_images/json-schema-content-1.png) ## [](#検証エラーの処理)検証エラーの処理 検証に成功した場合はフローの次の操作に進みます。検証に失敗すると、Mule アプリケーションから ​`JSON:SCHEMA_NOT_HONOURED`​ エラーが返されます。入力 JSON ドキュメントがそのスキーマに準拠していないなど、検証に失敗する理由はさまざまです。エラーの説明には、オブジェクトの JSON 配列が含まれます。これらのオブジェクトごとに、検出された各エラーに関する情報が含まれます。 たとえば、次の JSON 入力があるとします。 無効な JSON ```json [ {"a": "", "b": ""}, {"a": "", "b": ""}, {"a":""}, {"a": "", "b":""}, {"b": ""} ] ``` そして、JSON スキーマが次のとおりであるとします。 JSON スキーマ ```json { "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "a": { "type": "string", "minLength": 1, "maxLength": 255 }, "b": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": ["a", "b"] } } ``` `a`​ と ​`b`​ のどちらの文字列属性も必須であるため ("required": \["a", "b"\])、この入力 JSON は無効です。どちらの文字列属性も 1 文字以上にする必要があります。 JSON Module では、検証エラーの配列を返す詳細なエラー応答が提供されます。また、検証に失敗した場合、次のように File ​**Write**​ 操作を使用してレポートをファイルに追加できます。 ```xml #[error.errorMessage.payload] ``` 次の JSON コンテンツには、レポートファイルに追加される検証エラーの配列が表示されています。 ```json [ { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/0/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/0/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/1/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/1/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/2" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"b\"])", "required" : [ "a", "b" ], "missing" : [ "b" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/2/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/3/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/3/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/4" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"a\"])", "required" : [ "a", "b" ], "missing" : [ "a" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/4/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 } ] ``` ## [](#スキーマのリダイレクト)スキーマのリダイレクト JSON スキーマの中には、公開 URI を介して他のスキーマを参照するものがあります。けれども、主としてパフォーマンスやセキュリティ上の理由から、これらのスキーマをインターネットから取得したくないことがあります。 この問題の解決法は、メインスキーマと参照スキーマをすべてアプリケーションに含めることです。ただし、この解決法によって新たな問題が生じます。元のスキーマに、公開スキーマではなく、ローカルスキーマをポイントさせる必要があることです。 この問題に対処するために、このモジュールではスキーマのリダイレクトという概念が導入され、スキーマ自体を変更しなくても、外部参照をローカル参照に置換することができます。 ```xml ``` 上記の例では、​`[http://mule.org/schemas/fstab.json](http://mule.org/schemas/fstab.json)`​ のスキーマが、アプリケーション内に付属する、​`schema/fstab.json`​ というパスのスキーマにリダイレクトされます。 ## [](#追加オプション)追加オプション バリデーターには、重複キーを許可するかどうか、参照解決をどのように処理するかなどの追加オプションがあります。 詳細は、​[「JSON Module ドキュメントリファレンス」](https://docs.mulesoft.com/jp/json-module/2.4/json-reference)​を参照してください。 ## [](#関連情報)関連情報 - [JSON Module の概要](https://docs.mulesoft.com/jp/json-module/2.4/) # JSON Module を使用した JSON スキーマに対するドキュメントの検証 JSON Module の ​**Validate schema**​ 操作 (​``​) は、入力コンテンツが指定した JSON スキーマに準拠していることを検証します。
サポートされるスキーマバージョンは、Draft 3、Draft 4、Draft 6、Draft 7、Draft 2019-09、Draft 2020-12 です。Draft 3 および 4 のペイロード応答はその他のドラフトとは異なります。 大量の JSON ファイルを読み込むと、操作でメモリの制約が発生する可能性があります。
## [](#studio-で-validate-schema-操作設定する)Studio で Validate Schema 操作設定する **Validate schema**​ 操作は、メッセージペイロードレベルで入力ドキュメントを検索します。ただし、独自の入力を行うこともできます。スキーマコンテンツを検証するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​**\[Schema (スキーマ)\]**​ 項目でファイルをアップロードするか、​**\[Schema content (スキーマコンテンツ)\]**​ 項目でダイレクトスキーマテキストコンテンツを手動で追加できます。次の例は、Anypoint Studio で操作を設定する方法を示しています。 1. Studio のフローで、​**\[File Read\]**​ 操作をキャンバスにドラッグします。 2. **\[Path (パス)\]**​ を ​`document.json`​ に設定します。 3. **\[Target (対象)\]**​ を ​`jsonDoc`​ に設定します。 4. **\[Validate schema\]**​ 操作を ​**\[Read\]**​ 操作の横側にドラッグします。 5. **\[Schema (スキーマ)\]**​ を ​`/schema/my-schema.json`​ に設定します。 **設定 XML**​ エディターでは、​``​ 設定は次のように記述されます。 ```xml ``` Validation Module の ​**All**​ 操作 (​``​) 内で ​**Validate schema**​ 操作 (​``​) を使用できます。 ### [](#スキーマコンテンツを設定する)スキーマコンテンツを設定する 次の例では、​**Validate schema**​ 操作の ​**\[Schema Content (スキーマコンテンツ)\]**​ 項目を設定します。この項目に、検証するスキーマテキストコンテンツを入力します。
スキーマコンテンツを追加するには、スキーマとスキーマコンテンツの両方ではなくいずれかのみを指定します。​[Schema (スキーマ)]​ 項目でファイルをアップロードするか、​[Schema content (スキーマコンテンツ)]​ 項目でダイレクトスキーマテキストコンテンツを手動で追加できます。
1. Studio で、フローから ​**\[Validate Schema\]**​ 操作を選択します。 2. **\[Schema Content (スキーマコンテンツ)\]**​ 項目に、次のようなに検証するコンテンツを入力します。 ```xml { “$schema”: “http://json-schema.org/draft-04/schema#”, “type”: “array”, “items”: { “type”: “object”, “properties”: { “a”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 }, “b”: { “type”: “string”, “minLength”: 0, “maxLength”: 255 } }, “not”: {“required”:[“c”]} } } ``` ![検証するスキーマコンテンツが設定された \[Schema content (スキーマコンテンツ)\] 項目](_images/json-schema-content-1.png) ## [](#検証エラーの処理)検証エラーの処理 検証に成功した場合はフローの次の操作に進みます。検証に失敗すると、Mule アプリケーションから ​`JSON:SCHEMA_NOT_HONOURED`​ エラーが返されます。入力 JSON ドキュメントがそのスキーマに準拠していないなど、検証に失敗する理由はさまざまです。エラーの説明には、オブジェクトの JSON 配列が含まれます。これらのオブジェクトごとに、検出された各エラーに関する情報が含まれます。 たとえば、次の JSON 入力があるとします。 無効な JSON ```json [ {"a": "", "b": ""}, {"a": "", "b": ""}, {"a":""}, {"a": "", "b":""}, {"b": ""} ] ``` そして、JSON スキーマが次のとおりであるとします。 JSON スキーマ ```json { "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "a": { "type": "string", "minLength": 1, "maxLength": 255 }, "b": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": ["a", "b"] } } ``` `a`​ と ​`b`​ のどちらの文字列属性も必須であるため ("required": \["a", "b"\])、この入力 JSON は無効です。どちらの文字列属性も 1 文字以上にする必要があります。 JSON Module では、検証エラーの配列を返す詳細なエラー応答が提供されます。また、検証に失敗した場合、次のように File ​**Write**​ 操作を使用してレポートをファイルに追加できます。 ```xml #[error.errorMessage.payload] ``` 次の JSON コンテンツには、レポートファイルに追加される検証エラーの配列が表示されています。 ```json [ { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/0/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/0/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/1/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/1/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/2" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"b\"])", "required" : [ "a", "b" ], "missing" : [ "b" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/2/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/a" }, "instance" : { "pointer" : "/3/a" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/3/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items" }, "instance" : { "pointer" : "/4" }, "domain" : "validation", "keyword" : "required", "message" : "object has missing required properties ([\"a\"])", "required" : [ "a", "b" ], "missing" : [ "a" ] }, { "level" : "error", "schema" : { "loadingURI" : "file:/schema/object-array-schema.json#", "pointer" : "/items/properties/b" }, "instance" : { "pointer" : "/4/b" }, "domain" : "validation", "keyword" : "minLength", "message" : "string \"\" is too short (length: 0, required minimum: 1)", "value" : "", "found" : 0, "minLength" : 1 } ] ``` ## [](#スキーマのリダイレクト)スキーマのリダイレクト JSON スキーマの中には、公開 URI を介して他のスキーマを参照するものがあります。けれども、主としてパフォーマンスやセキュリティ上の理由から、これらのスキーマをインターネットから取得したくないことがあります。 この問題の解決法は、メインスキーマと参照スキーマをすべてアプリケーションに含めることです。ただし、この解決法によって新たな問題が生じます。元のスキーマに、公開スキーマではなく、ローカルスキーマをポイントさせる必要があることです。 この問題に対処するために、このモジュールではスキーマのリダイレクトという概念が導入され、スキーマ自体を変更しなくても、外部参照をローカル参照に置換することができます。 ```xml ``` 上記の例では、​`[http://mule.org/schemas/fstab.json](http://mule.org/schemas/fstab.json)`​ のスキーマが、アプリケーション内に付属する、​`schema/fstab.json`​ というパスのスキーマにリダイレクトされます。 ## [](#追加オプション)追加オプション バリデーターには、重複キーを許可するかどうか、参照解決をどのように処理するかなどの追加オプションがあります。 詳細は、​[「JSON Module ドキュメントリファレンス」](https://docs.mulesoft.com/jp/json-module/latest/json-reference)​を参照してください。 ## [](#関連情報)関連情報 - [JSON Module の概要](https://docs.mulesoft.com/jp/json-module/latest/)