Dans 4D v16 R4, nous avons enrichi les commandes d’objets afin que vous puissiez valider les objets JSON. 4D v16 R5 va encore plus loin en introduisant le support des pointeurs JSON. Super, mais qu’est-ce qu’un pointeur JSON et que puis-je faire avec ?
Tout comme vous ne stockez pas les détails de l’entreprise pour chaque employé dans un enregistrement de base de données (vous utilisez plutôt un lien vers l’enregistrement de l’entreprise), il peut être très utile de structurer un document JSON avec des parties qui peuvent être réutilisées à plusieurs endroits.
Prenons l’exemple d’une commande sur un site web : le client saisit l’adresse de livraison et désigne la même adresse de facturation. Au lieu de dupliquer les informations de l’adresse, nous pouvons définir l’adresse de livraison comme une référence à l’adresse de facturation.
Un autre scénario consiste à définir un objet modèle contenant des propriétés par défaut stockées au format JSON et à fusionner certaines de ces propriétés avec des informations stockées dans un fichier JSON distinct.
Les objets qui contiennent des cycles(c’est-à-dire deux objets qui se contiennent l’un l’autre) ne peuvent pas être stringifiés en JSON. Les pointeurs JSON sont un moyen d’exprimer la référence cyclique tout en maintenant la compatibilité avec le format JSON.
CONCEPT du pointeur JSON
Le pointeur JSON est une norme qui définit une syntaxe de chaîne pouvant être utilisée pour accéder à un champ particulier ou à une valeur clé dans le même document JSON ou dans un autre. Il est composé de chaînes de caractères séparées par le caractère « / ». Ces chaînes spécifient soit des clés dans des objets, soit des index dans des tableaux. La syntaxe des pointeurs JSON est définie par la RFC 6901.
Par exemple, cet objet :
{ "foo": {"$ref": "#/bar"}, "bar": "42" }
Peut être résolu comme :
{ "foo": "42", "bar": "42" }
NOUVELLE COMMANDE
La commande JSON resolve pointers analyse tous les pointeurs JSON trouvés dans l’objet passé en paramètre en tenant compte de certaines options (le cas échéant). La commande renvoie ensuite un objet contenant l’état de réussite, la valeur du résultat et la liste des erreurs éventuelles.
Quelques exemples… c’est toujours utile !
Consultez notre exemple de base de données pour en apprendre (et comprendre) davantage sur le fonctionnement des pointeurs JSON !
En plus de la démo, voici un autre exemple – prenons une variable $object qui contient ce qui suit :
Si j’exécute le code ci-dessous :
$result:=JSON Resolve pointers($object)
TRACE
Voici ce que j’obtiens dans les variables $object et $result:
Notez que $result est un objet, contenant à la fois l’état de réussite et la valeur retournée. S’il y avait eu des erreurs, elles auraient été incluses également.