Dalintis per


ParseJSON funkcija

Taikoma: "Canvas apps Copilot Studio Model", pagrįstos " Power Platform CLI Dataverse" funkcijomis "Power Pages"

Interpretuoja JSON eilutę ir pateikia dinaminę arba konkrečią įvestą reikšmę, jei pateikiamas tipas.

Svarbu

Aprašą

Funkcija ParseJSON analizuoja galiojančią JSON eilutę ir pateikia dinaminę reikšmę, nurodančią JSON struktūrą.

Pasirinktinai naudokite antrąjį argumentą, kad konvertuotumėte JSON į įvestą objektą, kurį galima tiesiogiai naudoti Power Fx formulėse. Tai palengvina rezultato vartojimą, nes konversijų ir prievartos naudojimo vietoje nebereikia. Neįvestas JSON susiejamas su tipu naudojant šias taisykles:

  • Tokio tipo stulpeliai, kurių nėra JSON, užpildomi tuščia forma.
  • JSON stulpelių, kurių nėra tipe, nepaisoma.
  • Stulpeliai, kurie yra ir tipo, ir JSON, JSON reikšmė turi būti priverstinė tipui.

Funkcija ParseJSON gali grąžinti klaidas, jei tekstas negalioja JSON pagal "JavaScript Object Notation" (JSON) formatą, aprašytą ECMA-404 ir IETF RFC 8259.

Sintaksė

ParseJSON( JSONString [ , Tipas ] )

  • JSONString - Būtina. JSON struktūra nurodoma kaip tekstas.
  • Tipas - neprivalomas. JSON Power Fx struktūros tipo apibrėžimas. Be šio argumento ParseJSON grąžinama dinaminė reikšmė; su ja funkcija grąžina konkrečią įvestą reikšmę.

Dinaminių reikšmių konvertavimas

Be antrojo argumento pateikia dinaminę reikšmę, ParseJSON kuri reikalauja aiškaus lauko reikšmių konvertavimo palaikomų duomenų tipuose. Šioje lentelėje išvardyti duomenų tipai „Power Apps“, atitinkamas JSON duomenų tipas ir kaip juos konvertuoti.

Duomenų tipas JSON pavyzdžiai Aprašą Konvertavimo pavyzdys
Bulio logikos { "bool": true } Bulio logikos tipas yra aiškus JSON tipas ir jį galima tiesiogiai konvertuoti. Bulio logika( ParseJSON("{ ""bulio logika": true }").bulio logika )
Spalva { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON nėra spalvos tipo. Spalvų reikšmes galima kurti pagal RGBA sveikuosius skaičius arba šešioliktaines eilutes. 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 ) ) )
Valiuta, skaičius { "numbervalue": 123.5 } Skaičiai JSON formatu pateikiami tiesiogiai su tašku ( . ) kaip dešimtainiu skyrikliu. Value( ParseJSON("{ ""numbervalue": 123.5 }).numbervalue )
Data, DateTime, laikas { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON neturi datos arba laiko tipo, todėl datas ir laiką gali nurodyti tik kaip eilutes. Dinaminę reikšmę galima tiesiogiai konvertuoti iš ISO 8601 formato eilutės į datą, laiką arba datą ir laiką. Esant kitiems formatams, pirmiausia konvertuokite JSON lauką į tekstą naudodami funkciją Text(), tada naudokite funkciją DateValue(), TimeValue() arba DateTimeValue(), kuri pagal numatytąsias nuostatas naudos dabartinio vartotojo parametrų kalbą. DateValue( ParseJSON("{ ""paskyra": ""2022-05-10"" }).appointment )
DateValue( Tekstas( ParseJSON("{ ""paskyra": ""2022 m. gegužės 5 d." }).appointment )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON neturi GUId duomenų tipo, todėl juos galima atvaizduoti tik kaip eilutes. GUID( ParseJSON("{ "id": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, vaizdas, medija { "URI": "https://northwindtraders.com/logo.jpg" } Šie duomenų tipai yra teksto duomenų tipai, juos galima konvertuoti į tekstą ir tada naudoti „Power Apps“. Text( ParseJSON("{ "URI": ""https://northwindtraders.com/logo.jpg"" }"). URI )
Pasirinkimas { "status": 1 }
{ "status": "Closed" }
Pasirinkimai pateikiami kaip lokalizuotos eilutės, pagrįstos skaičiumi. JSON() funkcija nuosekliai išdėsto pasirinkimą pagal pagrindo skaičių. Nėra tiesioginio konvertavimo iš skaičiaus arba eilutės į pasirinkimą, tačiau teksto arba skaičiaus reikšmei galima naudoti funkcijas Switch() arba If(). Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Įrašas { "field": "value" } Nėra tiesioginio konvertavimo iš JSON objekto į įrašų struktūrą, tačiau atskirus laukus galima gauti iš dinaminės reikšmės, kad būtų galima sudaryti įrašą. { laukas: Text( ParseJSON( "{ ""laukas": "reikšmė"" }" ).field ) }
Įrašo nuoroda netaikoma Įrašų nuorodos būdingos tik duomenų šaltiniams, jų negalima nuosekliai išdėstyti arba panaikinti išdėstymo. Laukų reikšmės, nurodančios unikalius raktus, gali būti naudojamos JSON formatu siekiant identifikuoti įrašus, kuriuos galima peržvelgti. netaikoma
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON gali sudaryti masyvai, kuriuos galima konvertuoti į lenteles. Šios reikšmės gali būti įrašų masyvai arba reikšmių masyvai, kurie iš esmės yra vieno stulpelio lentelės. ParseJSON() masyvus galima konvertuoti tik į vieną dinaminių reikšmių stulpelių lentelę ir juos galima naudoti kaip tokį arba konvertuoti į įvestas įrašų lenteles naudojant "ForAll()". ForAll( Table( ParseJSON"[ { "id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), pavadinimas: Text(ThisRecord.Value.name) } )
Tekstinė žinutė { "stringField": "this is text" } Tekstas yra aiškus JSON tipas ir jį galima tiesiogiai konvertuoti. Text( ParseJSON( "{ "stringField": ""this is text"" }).stringField )
Dvi parinktys { "available": true }
{ "available": "Yes" }
Dvi parinktys pateikiamos kaip lokalizuotos eilutės, pagrįstos Bulio logika. JSON() funkcija nuosekliai išdėsto dvi parinktis kaip jų Bulio logikos reikšmę. Nėra tiesioginio konvertavimo iš Bulio logikos, skaičiaus arba eilutės į dvi parinktis, tačiau teksto, skaičiaus arba Bulio logikos reikšmei galima naudoti funkcijas Switch() arba If(). Switch( Boolean( ParseJSON( "{ "available": true }" ).available ), false, Availability.No, true, Availability.Yes )

Pavyzdžiai

Prieiga prie laukų reikšmių

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Ši formulė pateikia tekstą text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Ši formulė pateikia skaičių 567:
    Value( ParseJSON( JsonString ).number )
    

Jei lauko pavadinimas yra netinkamas identifikatoriaus pavadinimas, laukų pavadinimus galite pateikti su viengubomis kabutėmis. Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "0": { "child-field": "text value" } }
  1. Ši formulė pateikia tekstą text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Tuščios reikšmės

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Bandant pasiekti nesamus laukus, pateikiama Blank(). Ši formulė pateikia true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null reikšmės laikomos Blank(). Ši formulė pateikia true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Paprasti masyvai

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "array": [1, 2, 3] }
  1. Prieiga prie antrojo skaičiaus masyvo lauko vieno stulpelio dinaminių reikšmių lentelėje ir konvertuojama į skaičių naudojant Reikšmę() pateikia 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Konvertuojant vieno stulpelio dinaminių reikšmių lentelę masyvo lauke į vieną skaičių stulpelio lentelę { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Įrašų masyvai

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Konvertuoti į įvestą įrašų lentelę tiesiogiai naudojant "ForAll() " galima naudojant ThisRecord.[fieldname]prieigai prie dinaminių laukų ir juos konvertuojant į konkrečius tipus:

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

Masyvas į lentelę

  1. Dinaminių reikšmių konvertavimas į lentelę naudojant funkciją Table() pateikia dinaminių reikšmių vieno stulpelio lentelę. Tada objektą reikia pasiekti naudojant Value (vieną) stulpelį ir jį galima konvertuoti į tipus, kaip buvo paaiškinta anksčiau.

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

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

Table() pateikia vieno stulpelio dinaminių reikšmių lentelę su vieno stulpelio skaičiaus masyve reikšme...

 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() pateikia dinaminių reikšmių vieno stulpelio lentelę, kuri nurodo kiekvieną json objektą masyve.

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