Funktsioon ParseJSON
Kehtib: Lõuendirakendused Mudelipõhised rakendused Power Pages Power Platform CLI
Tõlgendab JSON-i stringi ja tagastab tüüpimata objekti.
Kirjeldus
Funktsioon ParseJSON sõelub kehtiva JSON-i stringi ja tagastab tüüpimata objekti, mis tähistab JSON-i struktuuri.
Funktsioon ParseJSON võib tagastada tõrkeid, kui tekst ei ole kehtiv JSON vastavalt vormingule JavaScript Object Notation (JSON), mida on kirjeldatud versioonides ECMA-404 ja IETF RFC 8259.
Süntaks
ParseJSON( JSONString )
- JSONString - Nõutav. Tekstina esitatud JSON-i struktuur.
Tüüpimata objekti andmetüüpi teisendamine
ParseJSON tagastab tüüpimata objekti, mis vajab selgesõnalist väljaväärtuste teisendamist toetatud andmetüüpides. 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. | loogiline( 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( "{ ""värv"": ""#102030"" }" ).värv ) 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("{ ""arvväärtus"": 123,5 }").arvväärtus ) |
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. Tüüpimata objekti on võimalik stringist otse kuupäevaks, kellaajaks või datetime'iks teisendada vormingus ISO 8601. 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"" }").kohtumine ) DateValue( Text( ParseJSON("{ ""kohtumine"": ""5. mai 2022"" }").kohtumine ) ) |
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-426655440000"" }").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( "{ "olek"": 1 }" ).olek ), 0, Olek.Open, 1, Olek.Suletud ) |
Kirje | { "field": "value" } |
JSON-i objektilt ei toimu otsest teisendamist kirjestruktuuriks, kuid üksikuid välju saab hankida tüüpimata objektist kirje moodustamiseks. | { väli: Text( ParseJSON( "{ ""väli"": ""väärtus"" }" ).väli ) } |
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 ühe tipimata objektide veerutabeliks ja neid saab sellisena kasutada või teisendada tipitud kirjetabeliteks, kasutades funktsiooni ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { "id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: 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( loogiline( ParseJSON( "{ ""saadaval"": tõene }" ).saadaval ), false, Availability.No, true, saadavus.Jah ) |
Näited
Juurdepääs väljaväärtustele
Arvestades järgmist JSON-i stringi muutujas nimega JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Järgmine valem tagastab teksti
text value
:Text( ParseJSON( JsonString ).parent.child )
- 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" } }
- 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 }
- Katsed pääseda juurde olematutele väljadele tagastavad funktsiooni Blank(). Järgmine valem tagastab suvandi
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- JSON-i
null
-väärtuseid käsitletakse funktsioonina Blank(). Järgmine valem tagastab suvanditrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Lihtsad massiivid
Arvestades järgmist JSON-i stringi muutujas nimega JsonString
{ "array": [1, 2, 3] }
- Juurdepääs teisele arvule massiivi välja tüüpimata objekti üheveerulises tabelis ja arvuks teisendamine, kasutades funktsiooni Value(), tagastab arvu
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Teisendades tüüpimata objekti üheveerulise tabeli massiivi väljal arvude
{ Value: 1 }, { Value: 2 }, { Value: 3 }
üheveeruliseks tabeliks: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"}
] }
Teisendamist kirjete tüübitud tabeliks otse funktsiooniga ForAll() on võimalik teostada, kasutades funktsiooni
ThisRecord.[fieldname]
juurdepääsuks tüüpimata objekti väljadele ja nende teisendamiseks tuntud tüüpideks:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Massiiv tabelisse
- Tüüpimata objekti teisendamisel tabelisse funktsiooni Table() kasutades on tulemuseks tüüpimata objektide üheveeruline tabel. 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] }
Diagramm() tagastab üheveerulise tipimata objektide tabeli üheveerulise väärtusega massiivis oleva arvu jaoks...
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"}
] }
Diagramm() tagastab üheveerulise tipimata objektide tabeli, mis esindab massiivi iga JSON-objekti.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )