JSONSetElement
Voegt een element in JSON-gegevens, dat is opgegeven door een objectnaam, een array-index of een pad, toe of wijzigt het.
Opmaak
JSONSetElement (json ; SleutelOfIndexOfPad ; waarde ; type)
Parameters
json
- een tekstuitdrukking of een veld dat een JSON-object of een array bevat.
SleutelOfIndexOfPad
- een tekstuitdrukking of een veld dat een JSON-objectnaam (sleutel), een array-index of een pad opgeeft. Raadpleeg Werken met de JSON-functies.
waarde
- een uitdrukking of een veld dat een getal, tekst of JSON-gegevens bevat.
type
- een numerieke waarde dat het in te stellen type gegevens opgeeft (zie hieronder).
Resulterend gegevenstype
tekst
Afkomstig uit versie
16.0
Beschrijving
Deze functie geeft als resultaat json
met waarde
ingesteld op het opgegeven SleutelOfIndexOfPad
. Als de json
-parameter leeg is (""), voegt deze functie waarde
toe aam een JSON-object (tussen accolades { }), tenzij het eerste deel van de parameter SleutelOfIndexOfPad
begint met een het teken "[". In dat geval voegt deze functie waarde
toe aan een JSON-array (tussen vierkante haakjes [ ]).
Gebruik voor de parameter type
een van de volgende waarden. Wanneer waarde
wordt toegevoegd aan json
, kunt u met de parameter type
opgeven indien waarde
moet worden geconverteerd naar een specifiek JSON-type of indien waarde
moet worden ingevoegd zonder het type te wijzigen.
|
Invoertype voor parameter |
Uitvoertype |
|
FileMaker-tekst |
JSON-tekenreeks (" ") |
|
FileMaker-getal |
JSON-getal |
|
JSON-object |
JSON-object ({ }) |
|
JSON-array |
JSON-array ([ ]) |
|
FileMaker-waarde of logische waarde in JSON |
Logische waarde in JSON |
|
Type wordt genegeerd |
JSON null |
|
JSON-element |
JSON-element (of JSON-tekenreeks, als |
-
U kunt
type
opgeven met de benoemde constante of de numerieke waarde die wordt weergegeven tussen haakjes, zoalsJSONString
of 1.
Voor JSONBoolean
: als waarde
true
is of een getal verschillend van nul is, wordt deze behandeld als waar; als waarde
false
is of nul is, wordt deze behandeld als onwaar. Anders wordt bepaald of waarde
true of false is op dezelfde manier als de parameter test
in de If functie.
Voor JSONRaw
: de JSON-parser verwerkt waarde
om te bepalen of deze een geldige JSON-syntaxis gebruikt. Als waarde
geldige JSON is, wordt het geparseerde resultaat gebruikt in de resulterende waarde van deze functie zonder elementen te converteren naar JSON-gegevenstypen. Alle tekens na het eerste JSON-element in waarde
worden genegeerd. Als waarde
bijvoorbeeld "4.2" is, wordt alleen "4" ingevoegd omdat een komma het scheidingsteken tussen elementen is volgens de JSON-syntaxis. Als waarde
geen geldige JSON is, wordt waarde
geconverteerd naar een JSON-tekenreeks in de resulterende waarde.
U kunt meerdere elementen instellen door een extra reeks parameters (SleutelOfIndexOfPad
, waarde
en type
) tussen vierkante haakjes [ ] voor elk element op te geven. De volgende syntaxis stelt N elementen tegelijk in:
JSONSetElement (json ;
[SleutelOfIndexOfPad1 ; waarde1 ; type1] ;
[SleutelOfIndexOfPad2 ; waarde2 ; type2] ;
...
[SleutelOfIndexOfPadN ; waardeN ; typeN]
)
Voorbeeld 1
Voegt een sleutel en de waarde ervan toe aan de root van een JSON-object.
JSONSetElement ("{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber)
geeft als resultaat {"a":11,"b":22.23}.
Voorbeeld 2
Voegt een JSON-object als een element van een ander JSON-object toe. Als de $$JSON-variabele is ingesteld op
dan geeft
JSONFormatElements (
JSONSetElement ($$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73} " ;
JSONObject
)
)
als resultaat
Voorbeeld 3
Wijzigt in de Voorbeeld van JSON-gegevens van de $$JSON-variabele de waarden van de sleutels "speciaal" en "voorraad" in het eerste "product"-element in de array.
JSONFormatElements (
JSONSetElement ($$JSON ;
["bakkerij.product[0].speciaal" ; 0 ; JSONBoolean] ;
["bakkerij.product[0].voorraad" ; 0 ; JSONNumber]
)
)
geeft als resultaat dezelfde gegevens als in $$JSON maar met het eerste element van de "product"-array gewijzigd in
{
"categorie" : "Broden",
"id" : "FB1",
"naam" : "Donuts",
"prijs" : 1.99,
"speciaal" : false,
"voorraad" : 0
}