Deli z drugimi prek


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 }
  1. Naslednja formula vrne besedilo text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 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" } }
  1. 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 }
  1. Poskus dostopa do neobstoječih polj vrne Blank(). Naslednja formula vrne true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. Vrednosti JSON null so obravnavane kot Blank(). Naslednja formula vrne true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Preprosta polja

Na podlagi naslednjega niza JSON v spremenljivki, poimenovani JsonString

{ "array": [1, 2, 3] }
  1. 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 ) )
    
  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"}
    ] }
  1. 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

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