Dijeli putem


ParseJSON (opis funkcije)

Odnosi se na: Aplikacije od gotovih gradivnih elemenata CLI aplikacije stvorene prema Power Platform modelu

Tumači JSON niz i vraća netipizirani objekt.

Opis

Funkcija ParseJSON analizirat će važeći JSON niz i vratiti netipizirani objekt koji predstavlja JSON strukturu.

Funkcija ParseJSON može vratiti pogreške ako tekst nije valjan JSON u skladu s JavaScript Object Notation (JSON) formatom opisanim u ECMA-404 i IETF RFC 8259.

Sintaksa

ParseJSON( JSONString )

  • JSONString – obavezno. JSON struktura predstavljena kao tekst.

Pretvaranje vrste podataka netipiziranog objekta

ParseJSON vraća netipizirani objekt koji zahtijeva eksplicitnu pretvorbu vrijednosti polja u podržanim vrstama podataka. Sljedeća tablica navodi vrste podataka u Power Apps i odgovarajuću JSON vrstu podataka i kako ih pretvoriti.

Vrsta podataka Primjeri JSON Opis Primjer pretvorbe
Booleov { "bool": true } Booleov je eksplicitni tip u JSON-u i može se izravno pretvoriti. Boolean( ParseJSON("{ ""bool"": true }").bool )
Boja { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
U JSON-u nema vrste boja. Vrijednosti boja mogu se stvoriti iz RGBA cijelih brojeva ili heksadecimalnih nizova. ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color )
With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) )
Valuta, broj { "numbervalue": 123.5 } Brojevi su predstavljeni izravno u JSON-u s točkom ( . ) kao decimalnim razdjelnikom. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Datum, datum i vrijeme, vrijeme { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON nema vrstu datuma ili vremena pa može predstavljati samo datume i vremena kao nizove. Netipizirani objekt može se izravno pretvoriti iz niza u formatu ISO 8601 u datum, vrijeme ili datum i vrijeme. Za ostale formate, naprije pretvorite JSON polje u tekst s pomoću funkcije Text(), a zatim koristite funkciju DateValue(), TimeValue() or DateTimeValue() koja će prema zadanim postavkama koristiti jezik trenutačnih korisničkih postavki. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON nema vrstu podataka za GUI-ove pa se mogu predstaviti samo kao nizovi. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
Hiperveza, slika, mediji { "URI": "https://northwindtraders.com/logo.jpg" } Ove vrste podataka ubrajaju se u tekstne vrste podataka i mogu se pretvoriti u tekst, a zatim upotrijebiti u jeziku Power Apps. Tekst( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Mogućnost odabira { "status": 1 }
{ "status": "Closed" }
Odabiri se predstavljaju kao lokalizirani nizovi, potkrijepljeni brojem. Funkcija JSON() serijalizira izbor na svoj broj podloge. Ne postoji izravna pretvorba broja ili niza u izbor, ali funkcije Switch() ili If() mogu se koristiti za tekstualnu ili brojčanu vrijednost. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Zapis { "field": "value" } Ne postoji izravna pretvorba iz JSON objekta u strukturu zapisa, no iz netipiziranog objekta mogu se dohvatiti pojedinačna polja za stvaranje novog zapisa. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Referenca zapisa N/D Reference zapisa jedinstvene su za izvore podataka i ne mogu se serijalizirati ili deserijalizirati. Vrijednosti polja koje predstavljaju jedinstvene ključeve mogu se koristiti u JSON-u za identifikaciju zapisa koji se zatim mogu tražiti. N/D
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON može sadržavati nizove koji se mogu pretvoriti u tablice. Te vrijednosti mogu biti nizovi zapisa ili nizovi vrijednosti koji su zapravo tablice s jednim stupcem. ParseJSON() nizovi mogu se pretvoriti samo u tablicu s jednim stupcem netipiziranih objekata i mogu se koristiti kao takvi ili pretvoriti u tipizirane tablice zapisa pomoću ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
SMS { "stringField": "this is text" } Tekst je eksplicitni tip u JSON-u i može se izravno pretvoriti. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Dvije mogućnosti { "available": true }
{ "available": "Yes" }
Dvije su opcije predstavljene kao lokalizirani nizovi, potkrijepljeni Booleovom vrijednosti. Funkcija JSON() serijalizira dvije mogućnosti u odnosu na svoju booleovu vrijednost. Ne postoji izravna pretvorba iz Booleovog broja ili niza u dvije opcije, ali funkcije Switch() ili If() mogu se koristiti za tekstualnu, brojčanu ili Booleovu vrijednost. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Primjeri

Pristup vrijednostima polja

S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Sljedeća formula vraća tekst text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Sljedeća formula vraća broj 567:
    Value( ParseJSON( JsonString ).number )
    

U slučaju da se naziv polja sastoji od nevažećeg naziva identifikatora, nazive polja možete staviti u jednostruke navodnike. S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "0": { "child-field": "text value" } }
  1. Sljedeća formula vraća tekst text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Prazne varijable

S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Pokušaj pristupa nepostojećim poljima vraća Blank(). Sljedeća formula vraća true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null vrijednosti smatraju se Blank(). Sljedeća formula vraća true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Jednostavni nizovi

S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "array": [1, 2, 3] }
  1. Pristup drugom broju u tablici netipiziranog objekta s jednim stupcem u polju niza i pretvaranje u broj pomoću Value() vraća 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Pretvaranje tablice netipiziranog objekta s jednim stupcem u polju niza u tablicu s jednim stupcem brojeva { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Nizovi zapisa

S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Pretvorba u tipiziranu tablicu zapisa izravno pomoću ForAll() može se izvršiti korištenjem ThisRecord.[fieldname] za pristup poljima netipiziranog objekta i pretvorbu istih u poznate tipove:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Niz do tablice

  1. Pretvaranje netipiziranog objekta u tablicu pomoću funkcije Table() rezultira tablicom netipiziranih objekata s jednim stupcem. Objektu zatim treba pristupiti pomoću Value (jednog) stupca i pretvoriti ga u tipove kao što je prethodno objašnjeno.

S obzirom na sljedeći JSON niz u varijabli pod nazivom JsonString

{ "array": [1, 2, 3] }

Table() vraća tablicu netipiziranih objekata s jednim stupcem s vrijednosti s jednim stupcem za broj u nizu...

 Set(untypedTable, Table( ParseJSON( JsonString ).array );
 
 Value( Index(untypedTable, 1).Value.Value )
 ```

Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
 { "id": 1, "name": "One"},
 { "id": 2, "name": "Two"}
 ] }

Table() vraća tablicu netipiziranih objekata s jednim stupcem koja predstavlja svaki json objekt u nizu.

  Set(untypedTable, Table( ParseJSON( JsonString ).array );
  
  Text( Index(untypedTable, 1).Value.name )