Funkcija ParseJSON
Velja za: Aplikacije Canvas Aplikacije, ki temeljijo na modelu Power Pages Power Platform CLI
Interpretira niz JSON in vrne predmet brez vrste.
Description
Funkcija ParseJSON bo razčlenila veljaven niz JSON in vrnila predmet brez vrste, ki predstavlja strukturo JSON.
Funkcija ParseJSON lahko vrne napake, če besedilo ni veljavno JSON v skladu z obliko zapisa predmeta JavaScript (JSON), opisano v ECMA-404 in IETF RFC 8259.
Sintaksa
RazčleniJSON( JSONString )
- JSONString – Zahtevano. Struktura JSON, predstavljena kot besedilo.
Pretvorba vrste podatkov predmeta brez vrste
ParseJSON vrne predmet brez vrste, za katerega je zahtevana izrecna pretvorba vrednosti polj v podprte vrste podatkov. Naslednja tabela navaja vrste podatkov v Power Apps in ustrezne vrste podatkov JSON ter način njihove pretvorbe.
Podatkovni tip | Primeri JSON | Description | Primer pretvorbe |
---|---|---|---|
Logično | { "bool": true } |
Logična vrednost je izrecna vrsta v JSON in jo je mogoče neposredno pretvoriti. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
Barva | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
V JSON ni vrste barve. Barvne vrednosti je mogoče ustvariti iz celih števil RGBA ali šestnajstiških nizov. | ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"" : 0,5 }" ) }, RGBA(Vrednost(uo.r),Vrednost(uo.g),Vrednost(uo.b),Vrednost(uo.a))) |
Valuta, številka | { "numbervalue": 123.5 } |
Številke so predstavljene neposredno v JSON s piko ( . ) kot decimalnim ločilom. | Vrednost( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue ) |
Datum, DateTime, čas | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON nima vrste datuma ali časa, zato lahko predstavlja samo datume in čase kot nize. Predmet brez vrste je mogoče neposredno pretvoriti iz niza v obliki zapisa ISO 8601 v datum, čas ali datum in čas. Pri drugih oblikah zapisa je treba najprej pretvoriti polje JSON v besedilo s funkcijo Text() in nato uporabiti funkcijo DateValue(), TimeValue() or DateTimeValue(), ki bo privzeto uporabila jezik nastavitev trenutnega uporabnika. | DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON nima podatkovnega tipa za GUID-je, zato jih je mogoče predstaviti le kot nize. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
HyperLink, slika in predstavnost | { "URI": "https://northwindtraders.com/logo.jpg" } |
Te vrste podatkov so besedilne vrste podatkov in jih je mogoče pretvoriti v besedilo in nato uporabiti v storitvi Power Apps. | Besedilo( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI ) |
Možnost | { "status": 1 } { "status": "Closed" } |
Izbire so predstavljene kot lokalizirani nizi, ki so podprti s številom. Funkcija JSON() serializira izbiro v njeno podporno številko. Ni nobene neposredne pretvorbe števila ali niza v izbiro, ampak funkcije Switch() ali If() lahko uporabite za besedilno ali številsko vrednost. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
Zapis | { "field": "value" } |
Ni neposredne pretvorbe iz predmeta JSON v strukturo zapisa, vendar je mogoče posamezna polja pridobiti iz predmeta brez vrste, da ustvarite zapis. | { polje: Besedilo( ParseJSON( "{ ""polje"": ""vrednost"" }" ).polje ) } |
Sklic na zapis | Ni na voljo | Sklici na zapise so edinstveni za vire podatkov in jih ni mogoče serializirati ali preklicati serializacije. Vrednosti polj, ki predstavljajo edinstvene ključe, je mogoče uporabiti v JSON za identifikacijo zapisov, ki jih je nato mogoče poiskati. | Ni na voljo |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON lahko vsebuje polja, ki jih je mogoče pretvoriti v tabele. Te vrednosti so lahko polja zapisov ali polja vrednosti, ki so dejansko tabele z enim stolpcem. Nize ParseJSON() je mogoče pretvoriti samo v enostolpčno tabelo netipiziranih predmetov in jih je mogoče uporabiti kot take ali pretvoriti v tipizirane tabele zapise z uporabo ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { " "id"": 2, ""name"": ""dva"" } ]" ) ), { id: vrednost(ThisRecord.Value.id), ime: besedilo(ThisRecord.Value.name) } ) |
SMS-a | { "stringField": "this is text" } |
Besedilo je izrecna vrsta v JSON in jo je mogoče neposredno pretvoriti. | Text( ParseJSON( "{ ""stringField"": ""to je besedilo"" }").stringField ) |
Dve možnosti | { "available": true } { "available": "Yes" } |
Dve možnosti sta predstavljeni kot lokalizirani nizi, podprti z logično vrednostjo. Funkcija JSON() serializira dve možnosti v logično vrednost. Ni nobene neposredne pretvorbe logične vrednosti, števila ali niza v dve možnosti, ampak funkcijo Switch() ali If() lahko uporabite za besedilno, številsko ali logično vrednost. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Primeri
Dostop do vrednosti polja
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Naslednja formula vrne besedilo
text value
:Text( ParseJSON( JsonString ).parent.child )
- Naslednja formula vrne število
567
:Value( ParseJSON( JsonString ).number )
Če je ime polja sestavljeno iz neveljavnega imena identifikatorja, lahko imena polj postavite v enojne narekovaje.
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "0": { "child-field": "text value" } }
- Naslednja formula vrne besedilo
text value
:Text( ParseJSON( JsonString ).'0'.'child-field' )
Prazna
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Poskus dostopa do neobstoječih polj vrne Blank(). Naslednja formula vrne
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- Vrednosti JSON
null
so obravnavane kot Blank(). Naslednja formula vrnetrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Preprosta polja
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "array": [1, 2, 3] }
- Dostop do druge številke v enostolpčni tabeli polja predmeta brez vrste in pretvorba v število z uporabo Value() vrneta
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Pretvorba tabele z enim stolpcem predmeta brez vrste v polju v številsko tabelo z enim stolpcem
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Polja zapisov
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Pretvorbo v tabelo zapisov z vrsto lahko izvedete neposredno s funkcijo ForAll() z uporabo
ThisRecord.[fieldname]
za dostop do polj predmeta brez vrste in jih pretvorite v znane vrste:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Polje v tabelo
- Pretvarjanje predmeta brez vrste v tabelo z uporabo funkcije Table() povzroči tabelo predmetov brez vrste z enim stolpcem. Do predmeta je treba nato dostopati z (enim) stolpcem
Value
in ga pretvoriti v vrste, kot je predhodno razloženo.
Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString
{ "array": [1, 2, 3] }
Table() vrne enostolpčno tabelo netipiziranih predmetov z enostolpčno vrednostjo za število v matriki ...
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() vrne tabelo z enim stolpcem netipiziranih predmetov ki predstavlja vsak predmet json v matriki.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )