Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti 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.
Description
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.
Syntax
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 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.
| Data type | JSON examples | Description | Example conversion |
|---|---|---|---|
| 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 ) |
| Color | { "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 ) ) ) |
| Currency, Number | { "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 ) |
| Choice | { "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 ) |
| Record | { "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 ) } |
| Record Reference | n/a | Į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. | n/a |
| 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) } ) |
| Text | { "stringField": "this is text" } |
Tekstas yra aiškus JSON tipas ir jį galima tiesiogiai konvertuoti. | Text( ParseJSON( "{ "stringField": ""this is text"" }).stringField ) |
| Two options | { "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 ) |
Examples
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' )
Blanks
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 ) )
Simple Arrays
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 )