Valider des données d'entrée JSON brutes utilisant un schéma JSON
Vous pouvez valider des colonnes JSON à l'aide du composant tJSONValidator.
Ce scénario s'applique uniquement à 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 et Talend Data Fabric.
Note InformationsRemarque : Le composant tJSONValidator est disponible uniquement si vous avez installé la mise à jour mensuelle R2024-11 du Studio Talend ou une plus récente fournie par Talend. Pour plus d'informations, contactez votre administrateur ou administratrice.
Pourquoi et quand exécuter cette tâche
Si vous souhaitez valider tous les enregistrements et les considérer tous comme valides ou invalides, utilisez un fichier JSON. Pour plus d'informations, consultez Valider un fichier JSON utilisant un schéma JSON.
Ce scénario décrit un Job utilisant :
- le composant tFixedFlowInput pour utiliser des données d'entrée brutes,
- le composant tJSONValidator, pour valider les colonnes JSON,
- le composant tLogRow pour écrire les résultats en sortie.
Configurer votre Job
Procédure
- À partir de la Palette, glissez-déposez les composants suivants dans l'espace de modélisation graphique : un tFixedFlowInput, un tJSONValidator et deux tLogRow.
- Reliez le tFixedFlowInput au tJSONValidator à l'aide d'un lien Main.
- Reliez le tJSONValidator à l'un des tLogRow à l'aide d'un lien FLOW.
- Reliez le tJSONValidator à l'autre tLogRow à l'aide d'un lien Reject.
Configurer le composant d'entrée
Procédure
Configurer le composant tJSONValidator
Procédure
Configurer le composant de sortie et exécuter le Job
Procédure
- Double-cliquez sur les composants tLogRow afin d'afficher leur vue Basic settings.
- Sélectionnez l'option Table (print values in cells of a table) pour les deux composants.
- Appuyez sur F6 pour enregistrer et exécuter le Job.
Résultats
.--+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| 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"}]}} |
'--+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'