JSONSetElement
Lägger till eller ändrar ett element i JSON-data som angetts av ett objektnamn, ett matrisindex eller en sökväg.
Format
JSONSetElement ( json ; nyckelEllerIndexEllerSökväg ; värde ; typ )
Parametrar
json
– ett textuttryck eller -fält som innehåller ett JSON-objekt eller -matris.
nyckelEllerIndexEllerSökväg
– textuttryck eller -fält som specificerar ett JSON-objektnamn (nyckel), ett matrisindex eller en sökväg. Mer information finns i Arbeta med JSON-funktionerna.
värde
– ett värde eller ett fält som innehåller ett tal, text eller JSON-data.
typ
– ett numeriskt värde som anger typen av data som ska ställas in (se nedan).
Returnerad datatyp
text
Ursprungsversion
16.0
Beskrivning
Denna funktion returnerar json
med värde
inställt på angivet nyckelEllerIndexEllerSökväg
. Om json
-parametern är tom (""), lägger denna funktion till värde
till ett JSON-objekt (inom parenteser { }), om inte den första delen av nyckelEllerIndexEllerSökväg
-parametern inleds med tecknet "[". I detta fall lägger funktionen till värde
till en JSON-matris (inom parentes [ ]).
Använd ett av följande värden för parametern typ.
När värde
läggs till i json
anger parametern typ
om värde
ska omvandlas till en specifik JSON-typ eller om värde
ska läggas till utan att typen ändras.
|
Inmatningstyp för |
Utdatatyp |
|
FileMaker-text |
JSON-sträng (" ") |
|
FileMaker-nummer |
JSON-nummer |
|
JSON-objekt |
JSON-objekt ( { } ) |
|
JSON-matris |
JSON-matris ( [ ] ) |
|
FileMaker-värde eller JSON booleskt värde |
JSON Booleskt |
|
Typ ignoreras |
JSON null |
|
JSON-element |
JSON-element (eller JSON-sträng, om |
-
Du kan ange
typ
med den namngivna konstanten eller det numeriska värdet inom parentes – t.ex.JSONString
eller 1 – utan citationstecken.
För JSONBoolean
gäller att om värde
är true
eller ett tal skilt från noll, så behandlas det som sant. Om värde
är false
eller noll behandlas det som falskt. Annars bestäms om värde
är sant eller falskt på samma sätt som för test
-parametern i Funktionen If.
För JSONRaw
bearbetar JSON-tolken värde
för att avgöra om det använder giltig JSON-syntax. Om värde
är giltig JSON används det tolkade resultatet i denna funktions returnerade värde utan att omvandla element till datatyper för JSON. Alla tecken efter det första JSON-elementet i värde
ignoreras – om värde
är "4,2", kommer bara "4" att infogas, eftersom ett komma är separator mellan element i JSON-syntax. Om värde
inte är giltig JSON så omvandlas värde
till en JSON-sträng i det returnerade värdet.
Du kan ställa in flera element genom att ange ytterligare nyckelEllerIndexEllerSökväg
-, värde
- och typ
-parametrar i parenteser [ ] för varje element. Följande syntax ställer in N element på en gång:
JSONSetElement ( json ;
[ nyckelEllerIndexEllerSökväg1 ; värde1 ; typ1 ] ;
[ nyckelEllerIndexEllerSökväg2 ; värde2 ; typ2 ] ;
...
[ nyckelEllerIndexEllerSökvägN ; värdeN ; typN ]
)
Exempel 1
Lägger till en nyckel och dess värde till roten i ett JSON-objekt.
JSONSetElement ( "{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber )
returnerar {"a":11,"b":22.23}.
Exempel 2
Skapar en martris, lägger till ett element (ett JSON-objekt) med hjälp av syntaxen "[+]”
och använder sedan syntaxen "[:]"
för att referera det elementet som det sista elementet i matriser för att kunna lägga till ytterligare ett värde–nyckel-par i objektet.
JSONSetElement( "[]";
["[+].a", 5, JSONNumber] ;
["[:].b", 6, JSONNumber]
)
Returnerar [{"a":5,"b":6}].
Exempel 3
Lägger till ett JSON-objekt som ett element i ett annat JSON-objekt. Om $$JSON-variabeln har värdet
så kommer
JSONFormatElements (
JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ;
JSONObject
)
)
att returnera
Exempel 4
Ändrar värdena för nycklarna "special" och "lager" i det första "produkt"-elementet i matrisen för de Exempel på JSON-data som finns i $$JSON-variabeln.
JSONFormatElements (
JSONSetElement ($$JSON ;
[ "bageri.produkt[0].special" ; 0 ; JSONBoolean ] ;
[ "bageri.produkt[0].lager" ; 0 ; JSONNumber ]
)
)
returnerar samma data som i $$JSON men med det första elementet i "produkt"-matrisen ändrat till
{
"kategori" : "Bröd",
"id" : "FB1",
"namn" : "Munkar",
"pris" : 1.99,
"special" : false,
"lager" : 0
}