Aggiunge o modifica un elemento nei dati JSON specificato dal nome di un oggetto, da un indice di matrice o da un percorso.
JSONSetElement ( json ; chiaveOindiceOpercorso ; valore ; tipo )
json
- qualsiasi espressione di testo o campo contenente un oggetto o una matrice JSON.
chiaveOIndiceOPercorso
- qualsiasi espressione di testo o campo che specifica il nome di un oggetto JSON (chiave), un indice di matrice o un percorso. Vedere Utilizzo delle funzioni JSON.
valore
- qualsiasi espressione o campo contenente un numero, testo o dati JSON.
tipo
- un valore denominato che specifica il tipo di dati da impostare (vedere di seguito).
Testo
FileMaker Pro 16.0
Questa funzione restituisce json
con valore
impostato al parametro chiaveOIndiceOPercorso
specificato. Se il parametro json
è vuoto (""), questa funzione aggiunge valore
a un oggetto JSON (tra parentesi graffe { }), a meno che la prima parte del parametro chiaveOIndiceOPercorso
non inizi con un carattere "[". In tal caso, questa funzione aggiunge valore
a una matrice JSON (tra parentesi [ ]).
Per il parametro tipo
, utilizzare uno dei seguenti valori. Se a json
viene aggiunto valore
, il parametro tipo
specifica se convertire valore
in un tipo JSON specifico o inserire valore
senza cambiare il tipo.
Parametro | Tipo di input per parametro | Tipo di output |
| Testo FileMaker | Stringa JSON (" ") |
| Numero FileMaker | Numero JSON |
| Oggetto JSON | Oggetto JSON ( { } ) |
| Matrice JSON | Matrice JSON ( [ ] ) |
| Valore FileMaker o valore booleano JSON | Valore booleano JSON |
| tipo viene ignorato | Valore nullo JSON |
| Elemento JSON | Elemento JSON (o stringa JSON, se |
1. È possibile specificare tipo
utilizzando il valore denominato o il valore numerico indicato tra parentesi (ad esempio, JSONString
o 1).
Per JSONBoolean
, se valore
è true
o un numero diverso da zero, viene trattato come vero; se valore
è false
o zero, viene trattato come falso. In caso contrario, se valore
è true o false viene determinato nello stesso modo del parametro test
nella funzione If.
Per JSONRaw
, il parser JSON elabora valore
per stabilire se utilizza una sintassi JSON valida. Se valore
è un valore JSON valido, il risultato analizzato viene utilizzato nel valore restituito di questa funzione senza convertire alcun elemento in tipi di dati JSON. Eventuali caratteri dopo il primo elemento JSON in valore
vengono ignorati; ad esempio, se valore
è "4,2", viene inserito solo "4", perché nella sintassi JSON una virgola è il separatore tra gli elementi. Se valore
non è un valore JSON valido, valore
viene convertito in una stringa JSON nel valore restituito.
È possibile impostare più elementi fornendo un insieme di parametri chiaveOIndiceOPercorso
, valore
e tipo
aggiuntivo tra parentesi [ ] per ciascun elemento. La sintassi di seguito imposta N elementi in una volta sola:
JSONSetElement ( json ;
[ chiaveOIndiceOPercorso1 ; valore1 ; tipo1 ] ;
[ chiaveOIndiceOPercorso2 ; valore2 ; tipo2 ] ;
...
[ chiaveOIndiceOPercorsoN ; valoreN ; tipoN ] ;
)
•Questa funzione non è supportata nelle soluzioni runtime e restituisce "?".
Aggiunge una chiave e il relativo valore al livello principale di un oggetto JSON.
JSONSetElement ( "{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber )
restituisce {"a":11,"b":22.23}.
Aggiunge un oggetto JSON come elemento di un altro oggetto JSON. Se la variabile $$JSON è impostata su
{
"a" : {
"id" : 12,
"lnk" : 34
}
}
allora
JSONFormatElements (
JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ;
JSONObject
)
)
restituisce
{
"a" :
{
"id" : 12,
"lnk" : 34
},
"b" :
{
"id" : 14,
"lnk" : 73
}
}
Nei Dati JSON di esempio memorizzati nella variabile $$JSON, modifica i valori delle chiavi "specialità" e "magazzino" nel primo elemento "prodotto" nella matrice.
JSONFormatElements (
JSONSetElement ( $$JSON ;
[ "panificio.prodotto[0].specialità" ; 0 ; JSONBoolean ] ;
[ "panificio.prodotto[0].magazzino" ; 0 ; JSONNumber ]
)
)
restituisce gli stessi dati in $$JSON, ma con il primo elemento della matrice "prodotto" modificato in
{
"categoria" : "Pani",
"id" : "FB1",
"nome" : "Donuts",
"prezzo" : 1,99,
"specialità" : false,
"magazzino" : 0
}