Deli putem


Funkcija ParseJSON

Važi za: Canvas aplikacije Model-driven aplikacije Power Pages Power Platform CLI

Tumači JSON nisku i vraća netipiziran objekat.

Opis

Funkcija ParseJSON će raščlaniti važeću JSON nisku i vratiti netipizirani objekat koji predstavlja JSON strukturu.

Funkcija ParseJSON može da vrati greške ako tekst nije važeći JSON prema JavaScript Object Notation (JSON) formatu opisanom u ECMA-404i IETF RFC 8259.

Sintaksa

ParseJSON( JSONString )

  • JSONString – Obavezno. JSON struktura predstavljena kao tekst.

Konvertovanje tipa podataka netipiziranog objekta

ParseJSON vraća netipiziran objekat koji zahteva eksplicitno konvertovanje vrednosti polja u podržanim tipovima podataka. Sledeća tabela navodi tipove podataka i Power Apps i odgovarajući JSON tip podataka i način njihovog konvertovanja.

Tip podataka Primeri JSON Opis Primer konverzije
Boolean { "bool": true } Logički tip je eksplicitni tip u JSON specifikaciji i može se direktno konvertovati. Boolean( ParseJSON("{ ""bool"": true }").bool )
Boja { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Ne postoji tip boje u JSON specifikaciji. Vrednosti boja se mogu kreirati iz RGBA celih brojeva ili heksadecimalnih niski. 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 se u JSON specifikaciji predstavljaju direktno sa tačkom ( . ) kao znakom za razdvajanje decimala. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Datum, datum-vreme, vreme { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON nema tip datuma ili vremena, tako da datum i vreme može da predstavlja samo kao niske. Netipiziran objekat se može direktno konvertovati iz niske u formatu ISO 8601 u datum, vreme ili datum i vreme. Za druge formate, prvo konvertujte JSON polje u tekst pomoću funkcije Text(), a zatim koristite funkciju DateValue(), TimeValue() ili DateTimeValue() koja će podrazumevano koristiti jezik postavki trenutnog korisnika. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON nema tip podataka za GUID vrednosti, tako da one mogu biti predstavljene samo kao niske. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
Hiperveza, slika, mediji { "URI": "https://northwindtraders.com/logo.jpg" } Ovi tipovi podataka su tekstualni tipovi podataka i mogu se konvertovati u tekst, a zatim koristiti u usluzi Power Apps. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Izbor { "status": 1 }
{ "status": "Closed" }
Izbori su predstavljeni kao lokalizovane niske praćene brojem. Funkcija JSON() serijalizuje izbor pratećim brojem. Nema direktne konverzije iz broja ili niske u izbor, ali funkcije Switch() ili If() mogu da se koriste na tekstu ili numeričkoj vrednosti. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Record { "field": "value" } Ne postoji direktna konverzija iz JSON objekta u strukturu zapisa, ali se pojedinačna polja mogu preuzeti iz netipiziranog objekta da bi se formirao zapis. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Referenca zapisa Nije primenjivo Reference zapisa su jedinstvene za izvore podataka i ne mogu biti serijalizovane ili neserijalizovane. Vrednosti polja koje predstavljaju jedinstvene ključeve mogu se koristiti u JSON-u da bi se identifikovali zapisi koji se zatim mogu potražiti. Nije primenjivo
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON može da sadrži nizove koji se mogu konvertovati u tabele. Ove vrednosti mogu biti nizovi zapisa ili nizovi vrednosti koje su efektivno tabele sa jednom kolonom. ParseJSON() nizovi se mogu konvertovati samo u tabelu sa jednom kolonom netipiziranih objekata i mogu se koristiti kao takvi ili konvertovati u tipizirane tabele zapisa pomoću funkcije ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Tekst { "stringField": "this is text" } Tekst je eksplicitni tip u JSON specifikaciji i može se direktno konvertovati. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Dve opcije { "available": true }
{ "available": "Yes" }
Dve opcije se predstavljaju kao lokalizovane niske praćene logičkom vrednošću. Funkcija JSON() serijalizuje dve opcije prema logičkim vrednostima. Nema direktne konverzije iz logičke vrednosti, broja ili niske u dve opcije, ali funkcije Switch() ili If() mogu da se koriste na tekstualnoj, numeričkoj ili logičkoj vrednosti. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Primeri

Pristup vrednostima polja

U sledećoj JSON niski u promenljivoj pod nazivom JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Sledeća formula vraća tekst text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Sledeć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. U sledećoj JSON niski u promenljivoj pod nazivom JsonString

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

Prazne vrednosti

U sledećoj JSON niski u promenljivoj pod nazivom JsonString

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

Jednostavni nizovi

U sledećoj JSON niski u promenljivoj pod nazivom JsonString

{ "array": [1, 2, 3] }
  1. Pristupanje drugom broju u tabeli sa jednom kolonom polja niza netipiziranog objekta i konvertovanje u broj pomoću funkcije Value() vraća 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Konvertovanje tabele sa jednom kolonom netipiziranog objekta u polju niza, u tabelu brojeva u jednoj koloni { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Nizovi zapisa

U sledećoj JSON niski u promenljivoj pod nazivom JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Konvertovanje u tipiziranu tabelu zapisa direktno pomoću funkcije ForAll() može se obaviti pomoću ThisRecord.[fieldname] za pristup poljima netipiziranog objekta i njihovog konvertovanja u poznate tipove:

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

Iz niza u tabelu

  1. Konvertovanje netipiziranog objekta u tabelu pomoću funkcije Table() rezultira tabelom sa jednom kolonom netipiziranih objekata. Objektu je zatim potrebno pristupiti koristeći (jednu) kolonu Value i konvertovati je u tipove kao što je prethodno objašnjeno.

U sledećoj JSON niski u promenljivoj pod nazivom JsonString

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

Table() vraća tabelu sa jednom kolonom netipiziranih objekata sa vrednošću jedne kolone 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 tabelu sa jednom kolonom netipiziranih objekata koja predstavlja svaki JSON objekat u nizu.

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