ParseJSON (funkcija ParseJSON)
Taikoma: Drobės programoms Modeliu pagrįstoms programoms Power Pages Power Platform CLI
Interpretuoja JSON eilutę ir pateikia neapibrėžto tipo objektą.
Aprašą
Funkcija ParseJSON išanalizuos tinkamos JSON eilutės sintaksę ir pateiks neapibrėžto tipo objektą, nurodantį JSON struktūrą.
ParseJSON funkcija gali pateikti klaidas, jei tekstas negalioja JSON pagal JavaScript objekto žymėjimo (JSON) formatą, aprašytą ECMA-404 ir IETF RFC 8259.
Sintaksė
ParseJSON( JSONString )
- JSONString – būtina. JSON struktūra nurodoma kaip tekstas.
Neapibrėžto tipo objekto duomenų tipo konvertavimas
ParseJSON pateikia neapibrėžto tipo objektą, kuriam reikalingas aiškus laukų reikšmių konvertavimas į palaikomus duomenų tipus. Š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. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
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. Neapibrėžto tipo objektą galima tiesiogiai konvertuoti iš eilutės ISO 8601 formatu į datą, laiką arba datetime. 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("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").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šo struktūrą, bet atskiri laukai gali būti nuskaityti iš neapibrėžto tipo objekto, kad būtų galima suformuoti įrašą. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).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 į neapibrėžto tipo objektų vieno stulpelio lentelę ir naudoti kaip tokią arba galima konvertuoti į apibrėžto tipo įrašų lenteles naudojant ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: 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
null
reikš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] }
- Pasiekus antrąjį skaičių neapibrėžto tipo objekto vieno stulpelio lentelės masyvo lauke ir konvertavus į skaičių naudojant Value(), pateikiama
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Neapibrėžto tipo objekto vieno stulpelio lentelė masyvo lauke konvertuojama į vieno stulpelio skaičių 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"}
] }
Tiesioginis konvertavimas į apibrėžtų tipų įrašų lentelę naudojant ForAll() gali būti atliekamas naudojant
ThisRecord.[fieldname]
prieigai prie neapibrėžto tipo objekto laukų ir juos konvertuojant į žinomus tipus:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Masyvas į lentelę
- Konvertavus neapibrėžto tipo objektą į lentelę naudojant funkciją Table(), gaunama neapibrėžto tipo objektų 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 neapibrėžto tipo objektų vieno stulpelio lentelę su vieno stulpelio reikšme skaičiui masyve...
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 neapibrėžto tipo objektų vieno stulpelio lentelę, kurioje pateikiamas kiekvienas masyve esantis JSON objektas.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )