Jagamisviis:


ParseJSON funktsioon

Kehtib järgmise kohta: Lõuendirakendused Copilot Studio mudelipõhised rakendused Power Platform CLI Dataverse funktsioonid Power Pages

Tõlgendab JSON-stringi ja tagastab dünaamilise väärtuse või konkreetse tipitud väärtuse, kui tüüp on esitatud.

Oluline

  • Teise argumendi ParseJSON kasutamine tipitud objektiks teisendamiseks on eksperimentaalne funktsioon.
  • Eksperimentaalsed funktsioonid ei ole mõeldud kasutamiseks tootmises ja nende funktsioonid võivad olla piiratud. Need funktsioonid on saadaval enne ametlikku väljalaset, et saaksite varakult juurde pääseda ja tagasisidet anda. Lisateave: Katse-, eelvaate- ja iganenud lõuendirakenduste funktsioonide mõistmine
  • Selles artiklis kirjeldatav käitumine on saadaval ainult siis, kui kasutaja määratletud tüüpide katsefunktsioon sätetes > Eelseisvad funktsioonid > Eksperimentaalne on sisse lülitatud (see on vaikimisi välja lülitatud).
  • Teie tagasiside on meile väga väärtuslik. Palun andke meile teada, mida arvate eksperimentaalsete funktsioonide kogukonna foorumist Power Apps .

Kirjeldus

Funktsioon ParseJSON sõelub kehtiva JSON-stringi ja tagastab dünaamilise väärtuse, mis tähistab JSON-struktuuri.

Soovi korral kasutage teist argumenti JSON-i teisendamiseks tipitud objektiks, mida saab valemites Power Fx otse kasutada. See muudab tulemuse tarbimise lihtsamaks, kuna konversioonid ja sunnid kasutuskohas pole enam vajalikud. Tippimata JSON vastendatakse tüübiga järgmiste reeglitega:

  • Sellist tüüpi veerud, mida JSON-is ei ole, täidetakse tühjana .
  • JSON-i veerge, mida tüübis pole, ignoreeritakse.
  • Veerud, mis on nii tüübis kui ka JSON-is, peab JSON-väärtus olema tüübile sunnitav.

Funktsioon ParseJSON võib tagastada tõrkeid, kui tekst ei sobi JSON vastavalt JavaScript Object Notationi (JSON) vormingule, mida on kirjeldatud ecMA-404 ja IETF RFC 8259-s.

Süntaks

ParseJSON( JSONString [ , Type ] )

  • JSONString - Nõutav. Tekstina esitatud JSON-i struktuur.
  • Tüüp - valikuline. Power Fx JSON-struktuuri tüübi määratlus. Ilma selle argumendita ParseJSON tagastab dünaamilise väärtuse; koos sellega tagastab funktsioon kindla tipitud väärtuse.

Dünaamiliste väärtuste teisendamine

Teise argumendita tagastab dünaamilise väärtuse, ParseJSON mis nõuab toetatud andmetüüpide väljaväärtuste otsest teisendamist. Järgmises tabelis on loetletud andmetüübid Power Appsis ja vastav JSON-i andmetüüp ning kuidas seda teisendada.

Andmetüüp JSON-i näited Kirjeldus Teisenduse näide
loogiline { "bool": true } Loogikaväärtus on JSON-is selgesõnaline tüüp ja seda saab otse teisendada. Boolean( ParseJSON("{ ""bool"": true }"). bool )
Värv { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON-is puudub värvi tüüp. Värviväärtusi on võimalik luua RGBA täisarvudest või kuueteistkümnendsüsteemis stringist. 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 ) ) )
Valuuta, arv { "numbervalue": 123.5 } Arvud on tähistatud otse JSON-is, kus kümnendkoha eraldajaks on punkt ( . ). Value( ParseJSON("{ ""numbervalue"": 123.5 }"). numbervalue )
Kuupäev, kuupäev ja kellaaeg, kellaaeg { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON-il puudub kuupäeva või kellaaja tüüp, seega saab kuupäevi ja kellaaegasid tähistada vaid stringidena. Dünaamilise väärtuse saab iso 8601 vormingus stringist otse teisendada kuupäevaks, kellaajaks või kuupäeva kellaajaks. Muude vormingute puhul teisendage JSON-i väli kõigepealt tekstiks, kasutades funktsiooni Text() ja seejärel funktsiooni DateValue(), TimeValue() või DateTimeValue(), mis kasutab vaikimisi praeguse kasutaja sätete keelt. DateValue( ParseJSON("{ ""kohtumine": ""2022-05-10"" }"). appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""5. mai 2022"" }"). appointment )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON-il puudub andmetüüp GUID-ele, seega saab neid tähistada vaid stringidena. GUID( ParseJSON("{ ""id": ""123e4567-e89b-12d3-a456-4266554440000"" }"). id )
Hüperlink, pilt ja meedia { "URI": "https://northwindtraders.com/logo.jpg" } Need andmetüübid on teksti andmetüübid ja neid saab tekstiks teisendada ja seejärel rakenduses Power Apps kasutada. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI )
Valik { "status": 1 }
{ "status": "Closed" }
Valikud esitatakse lokaliseeritud stringidena, mida toetab number. Funktsioon JSON() serialiseerib valiku selle varunumbrile. Otsene teisendus arvust või stringist valikuks puudub, kuid funktsioone Switch() või If() on võimalik kasutada teksti- või numbriväärtusega. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Kirje { "field": "value" } JSON-objektilt kirjestruktuurile otsest teisendamist pole, kuid üksikuid välju saab väärtusest Dynamic tuua kirje moodustamiseks. { väli: Text( ParseJSON( "{ "field"": ""value"" }" ).field ) }
Kirjeviide pole saadaval Kirjaviited on andmeallikate jaoks ainulaadsed ja neid ei ole võimalik serialiseerida ega nende serialiseerimist tühistada. Väljaväärtuseid, mis esindavad ainulaadseid võtmeid, on võimalik kasutada JSON-is nende kirjete tuvastamiseks, mida on võimalik siis üles otsida. pole saadaval
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON võib sisaldada massiive, mida on võimalik teisendada tabeliteks. Need väärtused võivad olla kirjete massiivid või väärtuste massiivid, mis on sisuliselt üheveerulised tabelid. ParseJSON() Massiive saab teisendada ainult üheks dünaamiliste väärtuste veerutabeliks ja neid saab sellisena kasutada või teisendada tipitud kirjetabeliteks funktsiooni ForAll()abil. ForAll( Table( ParseJSON( "[ { "id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), nimi: Text(ThisRecord.Value.name) } )
Tekstsõnum { "stringField": "this is text" } Tekst on JSON-is selgesõnaline tüüp ja seda saab otse teisendada. Text( ParseJSON( "{ ""stringField"": ""see on tekst"" }").stringField )
Kaks suvandit { "available": true }
{ "available": "Yes" }
Kaks suvandit esitatakse lokaliseeritud stringidena, neid toetab loogikaväärtus. Funktsioon JSON() serialiseerib kaks suvandit nende loogikaväärtuseks. Otsene teisendus loogikaväärtusest, arvust või stringist kaheks suvandiks puudub, kuid funktsioone Switch() või If() on võimalik kasutada teksti-, numbri- või loogikaväärtusega. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Näited

Juurdepääs väljaväärtustele

Arvestades järgmist JSON-i stringi muutujas nimega JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Järgmine valem tagastab teksti text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Järgmine valem tagastab arvu 567:
    Value( ParseJSON( JsonString ).number )
    

Juhul kui väljanimi sisaldab sobimatut tunnusnime, võite väljanimedele panna ümber üksikjutumärgid. Arvestades järgmist JSON-i stringi muutujas nimega JsonString

{ "0": { "child-field": "text value" } }
  1. Järgmine valem tagastab teksti text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Tühjad

Arvestades järgmist JSON-i stringi muutujas nimega JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Katsed pääseda juurde olematutele väljadele tagastavad funktsiooni Blank(). Järgmine valem tagastab suvandi true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON-i null-väärtuseid käsitletakse funktsioonina Blank(). Järgmine valem tagastab suvandi true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Lihtsad massiivid

Arvestades järgmist JSON-i stringi muutujas nimega JsonString

{ "array": [1, 2, 3] }
  1. Accessing the second number in the array field's single-column table of Dynamic values ja converting to a number using Value() returns 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Massiivivälja dünaamiliste väärtuste üheveerulise tabeli teisendamine üheks veeruks arvutabeliks { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Kirjete massiivid

Arvestades järgmist JSON-i stringi muutujas nimega JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Tipitud kirjetabeliks teisendamiseks otse funktsiooniga ForAll() saab kasutada ThisRecord.[fieldname]dünaamilistele väljadele juurdepääsemiseks ja kindlateks tüüpideks teisendamiseks.

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

Massiiv tabelisse

  1. Dünaamiliste väärtuste teisendamine tabeliks funktsiooni Table() abil annab tulemuseks üheveerulise dünaamiliste väärtuste tabeli. Objektile tuleb siis pääseda juurde veergu Value (üksik) kasutades ja see tuleb teisendada tüüpideks eelneva selgituse kohaselt.

Arvestades järgmist JSON-i stringi muutujas nimega JsonString

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

Tabel() tagastab dünaamiliste väärtuste üheveerulise tabeli, milles on massiivi arvu üheveeruline väärtus...

 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() tagastab dünaamiliste väärtuste üheveerulise tabeli, mis tähistab massiivi iga json-objekti.

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