Travailler avec des pointeurs JSON

Traduit automatiquement de Deepl

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 !

Exemple de base de données

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:

blank

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.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.