Nata
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti prisijungti arba pakeisti katalogus.
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti pakeisti katalogus.
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
- Antrasis argumentas norint ParseJSON konvertuoti į įvestą objektą yra eksperimentinė funkcija.
- Eksperimentinės funkcijos nėra skirtos naudoti gamybai ir gali būti apribotas jų funkcionalumas. Šios funkcijos pasiekiamos prieš oficialų išleidimą, kad galėtumėte gauti išankstinę prieigą ir pateikti atsiliepimų. Daugiau informacijos: Nebenaudojamų, eksperimentinių ir peržiūros funkcijų supratimas ir nebenaudojamos funkcijos drobės programose
- Šiame straipsnyje aprašytas veikimas galimas tik tada, kai įjungta vartotojo apibrėžtų tipų eksperimentinė funkcija parametruoseBūsimos eksperimentinės > funkcijos > (pagal numatytuosius nustatymus ji išjungta ).
- Jūsų atsiliepimai mums yra labai vertingi. Praneškite mums, ką manote eksperimentinių funkcijų bendruomenės forume Power Apps .
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 }
- Ši formulė pateikia tekstą
text value:Text( ParseJSON( JsonString ).parent.child ) - Š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" } }
- Š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 }
- Bandant pasiekti nesamus laukus, pateikiama Blank(). Ši formulė pateikia
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - JSON
nullreikšmės laikomos Blank(). Ši formulė pateikiatrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Paprasti masyvai
Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString
{ "array": [1, 2, 3] }
- 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 ) ) - 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"}
] }
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ę
- 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 )