Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
JSON Resoudre pointeurs
|
JSON Resoudre pointeurs ( objet {; options} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
objet | Objet |
![]() |
Objet contenant des pointeurs JSON à résoudre | |||||
![]() |
Objet avec pointeurs JSON résolus (uniquement si Résultat est un objet) | |||||||
options | Objet |
![]() |
Options pour la résolution des pointeurs | |||||
Résultat | Objet |
![]() |
Objet contenant le résultat du traitement | |||||
La commande JSON Resoudre pointeurs résout tous les pointeurs JSON présents dans objet, en tenant compte des options définies (s'il y en a).
Les pointeurs JSON sont particulièrement utiles pour :
Passez dans le paramètre objet un objet contenant des pointeurs JSON à résoudre (pour une description de la syntaxe des pointeurs JSON, veuillez vous reporter au paragraphe Définition des pointeurs JSON ci-dessous).
Note : L'objet source sera mis à jour avec le résultat de la résolution des pointeurs après l'exécution de la commande (sauf si le résultat n'est pas un objet, voir ci-dessous). Si vous souhaitez conserver une version originale de objet, il sera nécessaire d'appeler la commande OB Copier au préalable.
Optionnellement, vous pouvez passer dans options un objet contenant des propriétés spécifiques à utiliser lors de la résolution des pointeurs. Les propriétés suivantes sont prises en charge :
Propriété | Type de valeur | Description |
rootFolder | Chaîne | Chemin absolu (en syntaxe 4D standard) du dossier à utiliser pour résoudre les pointeurs relatifs dans objet. Par défaut, le dossier Resources de la base est utilisé. |
merge | Booléen | Fusionner les objets avec les objets pointeur (true) au lieu de les remplacer (false). Par défaut, l'option est à faux ![]() |
Après l'exécution de la commande :
Dans tous les cas, la commande retourne un objet contenant les propriétés suivantes :
Propriété | Type de valeur | Description |
value | tous | Résultat du traitement de la commande sur objet ; si le résultat est un objet, est égal à l'objet en sortie. |
success | Booléen | true si tous les pointeurs ont été résolus avec succès |
errors | Collection | Collection d'erreurs (le cas échéant) |
errors[].code | Nombre | Code d'erreur |
errors[].message | Chaîne | Message d'erreur |
errors[].pointerURI | Chaîne | Valeur de pointeur |
errors[].referredPath | Chaîne | Chemin complet de document |
JSON Pointer est un standard qui définit une syntaxe de chaîne qui peut être utilisée pour accéder à un champ ou une valeur de clé particulière dans la totalité du document JSON. Ce standard a été décrit dans la RFC 6901.
Un pointeur JSON est, à proprement parler, une chaîne composée de parties séparées par des '/'. Un pointeur JSON est généralement placé dans un URI qui spécifie le document dans lequel le pointeur sera résolu. Le caractère "#' est utilisé dans l'URI pour désigner le fragment contenant le pointeur JSON. Par convention, un URI contenant un pointeur JSON doit être placé dans une propriété d'objet JSON nommée "$ref".
{ "$ref":<chemin>#<pointeur_json> }
Note : 4D ne prend pas en charge le caractère "-" en tant que référence d'éléments de tableau non existants.
Les pointeurs JSON sont résolus récursivement, ce qui signifie que si un pointeur résolu contient lui-même des pointeurs, ils sont résolus et ainsi de suite jusqu'à ce que tous les pointeurs soient résolus. Dans ce contexte, tous les chemins de fichiers situés dans les URIs des pointeurs JSON peuvent être relatifs ou absolus. Ils doivent utiliser le "/" en tant que délimiteur de chemin et sont résolus selon les principes suivants :
Notes :
Cet exemple basique illustre comment un pointeur JSON peut être défini et remplacé dans un objet :
// création d'un objet avec valeurs
C_OBJET($o)
$o:=Creer objet("value";42)
// création de l'objet pointeur JSON
C_OBJET($ref)
$ref:=Creer objet("$ref";"#/value")
// ajout de l'objet pointeur JSON en tant que propriété
$o.myJSONPointer:=$ref
// résolution de l'ensemble et vérification que le pointeur a été résolu
C_OBJET($result)
$options:=Creer objet("rootFolder";Dossier 4D(Dossier Resources courant);"merge";Vrai)
$result:=JSON Resoudre pointeurs($o;$options)
Si($result.success)
ALERTE(JSON Stringify($result.value))
//{"value":42,"myJSONPointer":42}
Sinon
ALERTE(JSON Stringify($result.errors))
Fin de si
Vous voulez réutiliser l'adresse "billingAddress" comme adresse "shippingAddress" dans l'objet JSON suivant (nommé $oMyConfig):
{ "lastname": "Doe", "firstname": "John", "billingAddress": { "street": "95 S. Market Street", "city": "San Jose", "state": "California" }, "shippingAddress": { "$ref": "#/billingAddress" } }
Après l'exécution de ce code :
$oResult:=JSON Resoudre pointeurs($oMyConfig)
... l'objet suivant est retourné :
{ "success": true, "value": { "lastname": "Doe", "firstname": "John", "billingAddress": { "street": "95 S. Market Street", "city": "San Jose", "state": "California" }, "shippingAddress": { "street": "95 S. Market Street", "city": "San Jose", "state": "California" } } }
Cet exemple illustre l'effet de l'option "merge". Vous souhaitez modifier les droits d'un utilisateur, basés sur un fichier par défaut.
{ "rights": { "$ref": "defaultSettings.json#/defaultRights", "delete": true, "id": 456 } }
Le fichier defaultSettings.json contient :
{ "defaultRights": { "edit": true, "add": false, "delete": false } }
Si vous exécutez :
C_OBJET($options)
$options:=Creer objet("merge";Faux) //remplacer le contenu
$oResult:=JSON Resoudre pointeurs($oMyConfig;$options)
... la valeur résultante est exactement le contenu du fichier defaultSettings.json :
{ "success": true, "value": { "rights": { "edit": true, "add": false, "delete": false } } }
Si vous exécutez :
C_OBJET($options)
$options:=Creer objet("merge";Vrai) //fusionner les contenus
$oResult:=JSON Resoudre pointeurs($oMyConfig;$options)
... la valeur résultante est une version modifiée de l'objet original :
{ "success": true, "value": { "rights": { "edit": true, "add": false, "delete": true, "id": 456 } } }
Produit : 4D
Thème : JSON
Numéro :
1478
Nom intl. : JSON Resolve pointers
Créé : 4D v16 R5
4D - Langage ( 4D v20)
4D - Langage ( 4D v20.1)
4D - Langage ( 4D v20.2)
4D - Langage ( 4D v20.3)
4D - Langage ( 4D v20.4)
4D - Langage ( 4D v20.5)
4D - Langage ( 4D v20.6)