JSONスキーマを使って未加工の入力JSONデータを検証
tJSONValidatorコンポーネントを使ってJSONカラムを検証できます。
このシナリオはTalend Data Integration、Talend Data Management Platform、Talend Big Data Platform、Talend Real-Time Big Data Platform、Talend MDM Platform、Talend Data Services Platform、Talend MDM Platform、Talend Data Fabricにのみ適用されます。
情報メモ注: tJSONValidatorコンポーネントは、Talendが提供するR2024-11以降のTalend Studioマンスリーアップデートをインストール済みである場合のみ利用できます。詳細は、管理者にお問い合わせください。
このタスクについて
レコードをすべて検証して有効か無効かと判断したい場合は、JSONファイルを使用します。詳細は、JSONファイルを使ってJSONスキーマを検証をご覧ください。
このシナリオのジョブでは、以下のコンポーネントを使用しています:
- 未加工の入力データを使用するためのtFixedFlowInputコンポーネント。
- JSONカラムを検証するためのtJSONValidatorコンポーネント。
- 結果を出力するためのtLogRowコンポーネント。
ジョブを設定
手順
- [Palette] (パレット)から、tFixedFlowInput、tJSONValidator、2つのtLogRowをデザインワークスペースにドロップします。
- [Main] (メイン)リンクを使って、tFixedFlowInputをtJSONValidatorに接続させます。
- [FLOW] (フロー)リンクを使って、tJSONValidatorを1つのtLogRowに接続させます。
- [Reject] (リジェクト)リンクを使って、tJSONValidatorをもう1つのtLogRowに接続させます。
入力コンポーネントを設定
手順
tJSONValidatorコンポーネントを設定
手順
出力コンポーネントの設定とジョブの実行
手順
- tLogRowコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示させます。
- どちらのコンポーネントにも[Table (print values in cells of a table)] (テーブル(テーブルのセルの出力値))を選択します。
- F6を押すと、ジョブを保存して実行します。
タスクの結果
.--+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| tLogRow_3(OK) |
|=-+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|id|jsonValue |
|=-+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|1 |{"customers":[{"lastName":"Smith","firstName":"Jane","address":{"street":"4876 Felosa Drive","postCode":90017,"city":"Los Angeles","state":"CA","country":"United States"}}]}|
|2 |{"customers":[{"lastName":"Doe","firstName":"John","address":{"street":"42373 Tenmile","postCode":92203,"city":"Bermuda Dunes","state":"CA","country":"United States"}}]} |
|5 |{"customers":[{"lastName":"Ming","firstName":"Li","address":{"street":"321 Da Bei Yao","postCode":10012,"city":"Bei Jing","state":"","country":"China"}}]} |
'--+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
.--+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| tLogRow_4(NOK) |
|=-+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|id|jsonValue |ExecutionResult |
|=-+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=|
|3 |{"customers":[{"lastName":"Frye","firstName":"Lucy","address":{"street":"4862 Parkway Street","postCode":"92298","city":"Bermuda Dunes","state":"CA","country":"United States"}}]}|{"ExecutionResult":{"Status":"Invalid","Validations":[{"ColumnName":"jsonValue","Violations":[{"SchemaLocation":"https://example.com/arrays.schema.json#/$defs/customer/properties/address/properties/postCode/type","ErrorCode":"1029","ErrorType":"type","ErrorMessage":"$.customers[0].address.postCode: string found, integer expected","ElementValue":"92298","ElementLocation":"$.customers[0].address.postCode"}],"SchemaURI":"C:/inputSchema.json"}]}}|
|4 |{"customers":[{"lastName":"Joney","firstName":"Seb","address":{"street":"386 Hart Country Lane","postCode":30830,"city":"Waynesboro","state":8,"country":"United States"}}]} |{"ExecutionResult":{"Status":"Invalid","Validations":[{"ColumnName":"jsonValue","Violations":[{"SchemaLocation":"https://example.com/arrays.schema.json#/$defs/customer/properties/address/properties/state/type","ErrorCode":"1029","ErrorType":"type","ErrorMessage":"$.customers[0].address.state: integer found, string expected","ElementLocation":"$.customers[0].address.state"}],"SchemaURI":"C:/inputSchema.json"}]}} |
'--+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'