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 type1

Type d'entrée pour le paramètre valeur

Type de sortie

JSONString (1)

Texte FileMaker

Chaîne JSON (" ")

JSONNumber (2)

Nombre FileMaker

Nombre JSON

JSONObject (3)

Objet JSON

Objet JSON ( { } )

JSONArray (4)

Tableau JSON

Tableau JSON ( [ ] )

JSONBoolean (5)

Valeur FileMaker ou valeur booléenne JSON

Valeur booléenne JSON

JSONNull (6)

Type ignoré

Valeur nulle JSON

JSONRaw (0)

Elément JSON

Elément JSON (ou chaîne JSON, si la valeur n'est pas une valeur JSON valide)

  1. 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 exemple JSONString 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 :

Copier
JSONSetElement ( json ; 
   [ cléOuIndexOuChemin1 ; valeur1 ; type1 ] ; 
   [ cléOuIndexOuChemin2 ; valeur2 ; 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 

Crée un tableau, ajoute un élément (un objet JSON) en utilisant la syntaxe "[+]", puis utilise la syntaxe "[:]" pour référencer cet élément en tant que dernier élément du tableau afin d'ajouter une autre paire clé-valeur à l'objet.

Copier
JSONSetElement( "[]" ; 
    ["[+].a", 5, JSONNumber] ; 
    ["[:].b", 6, JSONNumber]
)

Renvoie [{"a":5,"b":6}].

Exemple 3 

Ajoute un objet JSON comme élément d'un autre objet JSON. Si la variable $$JSON est définie sur

Copier
{
    "a" : {
        "id" : 12,
        "lien" : 34
    }
}

alors

Copier
JSONFormatElements ( 
   JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lien\" : 73 } " ; 
      JSONObject 
   )
)

renvoie

Copier
{
    "a"
    {
        "id" : 12,
        "lien" : 34
    },
    "b"
    {
        "id" : 14,
        "lien" : 73
    }
}

Exemple 4 

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.

Copier
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

Copier
{
    "catégorie" : "Pains",
    "id" : "FB1",
    "nom" : "Donuts",
    "prix" : 1.99,
    "offre spéciale" : false,
    "stock" : 0
}