Lors de l’échange de données entre applications, services Web ou API, la moindre erreur structurelle peut tout faire capoter. C’est pourquoi la validation des données JSON est une étape essentielle dans de nombreux scénarios, notamment l’intégration d’API, l’importation/exportation de données, la configuration d’applications et la communication entre microservices. 4D 21 R3 n’est pas seulement une mise à jour du Draft 2020-12, c’est une mise en conformité totale avec les normes Web et API modernes. Les validations JSON deviennent plus puissantes, plus expressives et entièrement compatibles avec les outils actuels.
Qu’est-ce qu’un schéma ?
Un schéma JSON vous permet de décrire précisément la structure attendue d’un document : types de données, champs obligatoires, valeurs autorisées et formats (e-mail, URL, etc.).
Grâce à ce schéma, vous pouvez garantir la qualité et la fiabilité de vos échanges de données sans avoir à écrire manuellement de code de vérification. Si le JSON reçu ne respecte pas les règles définies, 4D vous indique exactement où et pourquoi la validation échoue.
Cela vous fait gagner un temps considérable, renforce la sécurité de vos applications et constitue une base solide pour la conception d’interfaces robustes ou de services web fiables.
4D propose la commande `JSON Validate ` pour comparer un objet JSON à un schéma conforme à la norme JSON Schema. Avec 4D 21 R3, cette commande fait un bond en avant : elle prend désormais en charge les versions les plus récentes de la norme (Draft 2020-12), offrant une plus grande flexibilité, de nouveaux mots-clés (const, if/then/else, unevaluatedProperties, …), la validation native des dates 4D et une meilleure interopérabilité avec les outils modernes.
Exemple : utilisation de règles conditionnelles
La nouvelle norme JSON Schema introduit de puissantes règles conditionnelles, vous permettant d’encoder une partie de votre logique métier directement dans le schéma, ce qui était fastidieux, voire impossible, avec la version Draft-04.
Prenons un exemple classique : la validation d’un paiement en fonction du mode de paiement sélectionné. Selon le mode de paiement :
- s’il s’agit d’une carte de crédit, « cardNumber » et « expiryDate » doivent être fournis,
- s’il s’agit d’un virement bancaire, « iban » et « bic » sont obligatoires,
- sinon (par exemple, pour les paiements en espèces), aucun de ces champs n’est obligatoire.
Avec Draft-04, vous deviez implémenter toutes ces vérifications manuellement dans votre code 4D. Le schéma ne pouvait définir que des types, des contraintes de base et des champs obligatoires, mais il ne pouvait pas exprimer de logique conditionnelle telle que « si paymentMethod = credit_card alors exiger cardNumber et expiryDate ».
La version Draft-2020-12 change tout. Vous pouvez désormais définir ces règles conditionnelles directement dans le schéma JSON. Voici un exemple concret :
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Schéma de commande",
"type": "object",
"properties": {
"orderId": { "type": "integer" },
"customer": { "type": "string" },
"amount": { "type": "number", "minimum": 0 },
"paymentMethod": {
"type": "chaîne de caractères",
"enum": ["carte_de_crédit", "virement_bancaire", "espèces"]
},
"numéro_de_carte": { "type": "chaîne de caractères", "modèle": "^[0-9]{16}$" },
"date_d'expiration": { "type": "chaîne", "modèle": "^(0[1-9]|1[0-2])/[0-9]{2}$" },
"iban": { "type": "chaîne" },
"bic" : { "type" : "chaîne" };
},
"obligatoire" : ["identifiantDeCommande", "client", "montant", "modeDePaiement"],
"if": { "properties": { "paymentMethod": { "const": "credit_card" } } },
"then": { "required": ["cardNumber", "expiryDate"] },
"else": {
"if": { "properties": { "paymentMethod": { "const": "bank_transfer" } } },
"then": { "required": ["iban", "bic"] }
}
}
Ce schéma combine :
- des expressions régulières (motifs) pour contrôler le format des nombres ;
- des règles conditionnelles (if/then/else) pour adapter les champs obligatoires en fonction du type de paiement.
Ensuite, côté 4D, il suffit de valider la réponse :
var $response; $schema; $result : Object
$response := JSON Parse($json; *)
$schema := JSON Parse($jsonSchema)
$result := JSON Validate($response; $schema)
If ($result.success)
// your treatment
Else
// manage errors
End if
Grâce à la validation intégrée, votre code 4D reste simple : il n’est pas nécessaire de tester manuellement les conditions en fonction du mode de paiement.
Le schéma devient une véritable spécification fonctionnelle qui peut être partagée avec l’équipe backend, le front-end, voire des partenaires tiers.
Compatibilité
Chaque schéma JSON spécifie la norme à utiliser via l’attribut $schema.
Dans 4D, seuls deux analyseurs de schéma JSON sont pris en charge :
- Draft-04
- Draft 2020-12
L’analyseur sélectionné est déterminé exclusivement par la valeur de la propriété $schema dans le document JSON Schema.
Par exemple :
- Pour utiliser Draft-04 :
« $schema » : « http://json-schema.org/draft-04/schema# »
- Pour utiliser le projet 2020-12 :
"$schema": "https://json-schema.org/draft/2020-12/schema"
Cela signifie que vos schémas existants basés sur Draft-04 continueront de fonctionner parfaitement, tout en vous laissant la liberté d’adopter la nouvelle version à votre rythme.
Si l’attribut $schema n’est pas spécifié, 4D utilise par défaut le Draft-04. Cependant, nous vous recommandons vivement de spécifier la norme à utiliser. Si vous partagez votre schéma pour valider les réponses de votre API REST, ou pour expliquer le format de réponse à une IA, celle-ci doit savoir quelle version du schéma vous utilisez.
Points clés
Avec 4D 21 R3, la commande JSON Validate est alignée sur les normes modernes de validation JSON, ce qui permet de valider les données provenant d’API, d’IA ou de tout autre service web. Vous bénéficiez :
- la prise en charge de la dernière norme JSON Schema,
- de nouveaux mots-clés plus puissants,
- d’une compatibilité améliorée avec les outils du secteur,
- tout en conservant la compatibilité avec vos schémas existants.
En combinant JSON Validate avec des appels d’API dans vos projets 4D, vous renforcez la fiabilité de vos intégrations IA et sécurisez vos flux de données, sans effort supplémentaire. Cette mise à jour positionne 4D parmi les plateformes capables de parler le langage des API modernes, des microservices et de l’IA générative.
Les commentaires ne sont pas disponibles pour cet article pour le moment.