Accéder au contenu principal Passer au contenu complémentaire

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

Utiliser des données d'entrée brutes vous permet de valider chaque enregistrement séparément. Chaque enregistrement est validé par rapport au schéma et est envoyé via le lien FLOW (valide) ou Reject (invalide).

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.
Job utilisant un tFixedFlowInput, un tJSONValidator et deux tLogRow.

Configurer votre Job

Procédure

  1. À partir de la Palette, glissez-déposez les composants suivants dans l'espace de modélisation graphique : un tFixedFlowInput, un tJSONValidator et deux tLogRow.
  2. Reliez le tFixedFlowInput au tJSONValidator à l'aide d'un lien Main.
  3. Reliez le tJSONValidator à l'un des tLogRow à l'aide d'un lien FLOW.
  4. Reliez le tJSONValidator à l'autre tLogRow à l'aide d'un lien Reject.

Configurer le composant d'entrée

Procédure

  1. Double-cliquez sur le composant tFixedFlowInput pour ouvrir sa vue Basic settings dans l'onglet Component.
  2. Cliquez sur Edit Schema.
  3. Dans la boîte de dialogue qui s'ouvre, cliquez sur le bouton [+] et ajoutez les colonnes qui contiennent les données d'entrée initiales.
    Dans cet exemple, ajoutez deux colonnes :
    • id, de type Integer,
    • json, de type String.
  4. Cliquez sur OK pour fermer cette boîte de dialogue.
  5. Sélectionnez l'option Use Inline Content.
  6. Saisissez vos données d'entrée dans Content.
    Dans cet exemple :
    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"}}]}
    3;{"customers":[{"lastName":"Frye","firstName":"Lucy","address":{"street":"4862 Parkway Street","postCode":"92298","city":"Bermuda Dunes","state":"CA","country":"United States"}}]}
    4;{"customers":[{"lastName":"Joney","firstName":"Seb","address":{"street":"386 Hart Country Lane","postCode":30830,"city":"Waynesboro","state":8,"country":"United States"}}]}
    5;{"customers":[{"lastName":"Ming","firstName":"Li","address":{"street":"321 Da Bei Yao","postCode":10012,"city":"Bei Jing","state":"","country":"China"}}]}

Configurer le composant tJSONValidator

Procédure

  1. Double-cliquez sur le tJSONValidator pour afficher sa vue Basic settings et définir ses propriétés.
  2. Si nécessaire, cliquez sur Sync columns afin de récupérer le schéma défini dans le composant d'entrée.
  3. Cliquez Add pour ajouter des lignes dans la zone Allocate.
  4. Sélectionnez la colonne d'entrée dans la liste déroulante.
  5. Définissez le schéma par rapport auquel les données doivent être validées, en saisissant le chemin d'accès au fichier du schéma, entre guillemets doubles.
    Dans cet exemple, "inputSchema.json".
    Configuration du tJSONValidator
    Note InformationsRemarque : Lorsque le dialecte $schema n'est pas défini dans le schéma, définissez la version brouillon du schéma JSON (JSON schema draft version) dans l'onglet Advanced settings.

Configurer le composant de sortie et exécuter le Job

Procédure

  1. Double-cliquez sur les composants tLogRow afin d'afficher leur vue Basic settings.
  2. Sélectionnez l'option Table (print values in cells of a table) pour les deux composants.
  3. Appuyez sur F6 pour enregistrer et exécuter le Job.

Résultats

Chaque enregistrement valide est envoyé via le lien FLOW et chaque enregistrement invalide est envoyé via le lien Reject.
.--+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
|                                                                                   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"}]}}                                |
'--+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.