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.

typ-parameter1

Inmatningstyp för värde-parameter

Utdatatyp

JSONString (1)

FileMaker-text

JSON-sträng (" ")

JSONNumber (2)

FileMaker-nummer

JSON-nummer

JSONObject (3)

JSON-objekt

JSON-objekt ( { } )

JSONArray (4)

JSON-matris

JSON-matris ( [ ] )

JSONBoolean (5)

FileMaker-värde eller JSON booleskt värde

JSON Booleskt

JSONNull (6)

Typ ignoreras

JSON null

JSONRaw (0)

JSON-element

JSON-element (eller JSON-sträng, om värde inte är giltig JSON)

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

Kopiera
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.

Kopiera
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

Kopiera
{
    "a" : {
        "id" : 12,
        "lnk" : 34
    }
}

så kommer

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

att returnera

Kopiera
{
    "a"
    {
        "id" : 12,
        "lnk" : 34
    },
    "b"
    {
        "id" : 14,
        "lnk" : 73
    }
}

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.

Kopiera
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

Kopiera
{
    "kategori" : "Bröd",
    "id" : "FB1",
    "namn" : "Munkar",
    "pris" : 1.99,
    "special" : false,
    "lager" : 0
}