JSONSetElement
Ajoute ou modifie un élément de données JSON défini par un nom d'objet, un index de tableau ou un chemin d'accès.
Format
JSONSetElement ( json ; cléOuIndexOuChemin ; valeur ; type )
Paramètres
json
: une expression ou une rubrique de type Texte qui contient un objet ou un tableau JSON.
cléOuIndexOuChemin
: une expression ou une rubrique de type Texte qui spécifie un nom d'objet, un index de tableau ou un chemin d'accès JSON. Consultez la section Utilisation des fonctions JSON.
valeur
: une expression ou une rubrique qui contient un nombre, du texte ou des données JSON.
type
: une valeur numérique qui spécifie le type de données à définir (voir ci-dessous).
Résultat
Texte
Provient de la version
16.0
Description
Cette fonction renvoie json
avec la valeur
définie dans le paramètre cléOuIndexOuChemin
spécifié. Si le paramètre json
est vide (""), cette fonction ajoute la valeur
à un objet JSON (entre accolades { }), à moins que la première partie du paramètre cléOuIndexOuChemin
commence par le caractère « [ ». Dans ce cas, cette fonction ajoute la valeur
à un tableau JSON (entre crochets [ ]).
Pour le paramètre type
, utilisez l'une des valeurs suivantes. Lorsqu'une valeur
est ajoutée dans le paramètre json
, le paramètre type
indique la conversion de la valeur
en type JSON spécifique ou l'insertion de la valeur
sans modifier le type.
Paramètre |
Type d'entrée pour le paramètre |
Type de sortie |
|
Texte FileMaker |
Chaîne JSON (" ") |
|
Nombre FileMaker |
Nombre JSON |
|
Objet JSON |
Objet JSON ( { } ) |
|
Tableau JSON |
Tableau JSON ( [ ] ) |
|
Valeur FileMaker ou valeur booléenne JSON |
Valeur booléenne JSON |
|
Type ignoré |
Valeur nulle JSON |
|
Elément JSON |
Elément JSON (ou chaîne JSON, si la |
-
Vous pouvez spécifier un
type
à l'aide de la constante nommée ou de la valeur numérique indiquée entre parenthèses, par exempleJSONString
ou 1 (sans guillemet).
Pour JSONBoolean
, si la valeur
est true
ou un nombre différent de zéro, elle est traitée comme vraie ; si la valeur
est false
ou zéro, elle est traitée comme fausse. Sinon, la valeur
est déterminée true ou false de la même manière que le paramètre test
l'est dans la fonction Si.
Pour JSONRaw
, l'analyseur JSON traite la valeur
pour déterminer si elle utilise une syntaxe JSON valide. Si la valeur
est une valeur JSON valide, le résultat analysé est utilisé dans la valeur renvoyée par cette fonction, sans convertir d'éléments en types de données JSON. Tous les caractères se trouvant après le premier élément JSON dans la valeur
sont ignorés (par exemple si la valeur
est « 4.2 », seul « 4 » sera inséré, car la virgule est le séparateur entre les éléments d'une syntaxe JSON. Si la valeur
n'est pas une valeur JSON valide, elle est convertie en chaîne JSON valide dans la valeur renvoyée.
Vous pouvez également définir plusieurs éléments en fournissant un ensemble supplémentaire de paramètres cléOuIndexOuChemin
, valeur
et type
entre crochets [ ] pour chaque élément. La syntaxe suivante définit les éléments N simultanément :
JSONSetElement ( json ;
[ cléOuIndexOuChemin1 ; valeur1 ; type1 ] ;
[ cléOuIndexOuChemin2 ; valueur2 ; type2 ] ;
...
[ cléOuIndexOuCheminN ; valeurN ; typeN ]
)
Exemple 1
Ajoute une clé et sa valeur à la racine d'un objet JSON.
JSONSetElement ( "{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber )
renvoie {"a":11,"b":22.23}.
Exemple 2
Ajoute un objet JSON comme élément d'un autre objet JSON. Si la variable $$JSON est définie sur
alors
JSONFormatElements (
JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lien\" : 73 } " ;
JSONObject
)
)
Résultat
Exemple 3
Modifie les valeurs des clés « offre spéciale » et « stock » du premier élément « produit » du tableau à partir de l'Exemple de données JSON stocké dans la variable $$JSON.
JSONFormatElements (
JSONSetElement ( $$JSON ;
[ "boulangerie.produit[0].offre spéciale" ; 0 ; JSONBoolean ] ;
[ "boulangerie.produit[0].stock" ; 0 ; JSONNumber ]
)
)
renvoie les mêmes données que dans la variable $$JSON mais modifie le premier élément du tableau « produit » en
{
"catégorie" : "Pains",
"id" : "FB1",
"nom" : "Donuts",
"prix" : 1.99,
"offre spéciale" : false,
"stock" : 0
}