ParseJSON-funktio
Koskee: Pohjaan perustuvat sovellukset Mallipohjaiset sovellukset Power Pages Power Platform CLI
Tulkitsee JSON-merkkijonon ja palauttaa tyypittämättömän objektin tai tyypitetyn objektin.
Tärkeää
- Toisen argumentin käyttäminen ParseJSON-funktiolle tyypitetyksi objektiksi muuntamiseksi on kokeellinen ominaisuus.
- Kokeellisia ominaisuuksia ei ole tarkoitettu tuotantokäyttöön ja niiden toiminnallisuus voi olla rajoitettu. Nämä toiminnot ovat käytettävissä ennen virallista julkaisua, jotta voit käyttää niitä aikaisessa vaiheessa ja antaa palautetta. Lisätietoja: Tietoja in kokeellisista, esiversio- ja käytöstä poistetuista ominaisuuksista pohjaan perustuvissa sovelluksissa
- Tässä artikkelissa kuvattu toiminta on käytettävissä vain, kun kokeellinen Käyttäjän määrittämät tyypit -ominaisuus on otettu käyttöön (se on oletusarvoisesti pois käytöstä) kohdassa Asetukset > : Tulevat ominaisuudet > Kokeellinen.
- Palautteenne on meille erittäin tärkeää. Kerro meille mielipiteesi Power Appsin kokeellisten ominaisuuksien yhteisön keskustelupalstalla.
Description
ParseJSON-funktio jäsentää kelvollisen JSON-merkkijonon ja palauttaa JSON-rakennetta edustavan tyypittämättömän objektin.
Vaihtoehtoisesti voit käyttää toista argumenttia JSON-tiedoston muuntamiseen tyypitetyksi objektiksi, jota voidaan käyttää suoraan Power Fx -kaavoissa. Tämä helpottaa tuloksen kuluttamista, koska muunnoksia ja pakottamista käyttöpaikassa ei enää tarvita. Tyypittämätön JSON yhdistetään tyyppiin seuraavien sääntöjen mukaisesti:
- Tyypin sarakkeet, joita ei ole JSON:ssa, täytetään tyhjä-arvolla.
- JSON-sarakkeet, joita ei ole tyypissä, ohitetaan.
- Sarakkeet, jotka ovat sekä tyypissä että JSON:ssa, JSON-arvon on oltava muunnettavissa valituksi tyypiksi.
ParseJSON-funktio voi palauttaa virheitä, jos teksti ei ole kelvollinen JSON-merkkijono kohdissa ECMA-404 ja IETF RFC 8259 kuvatussa JavaScript Object Notation (JSON) -muodossa.
Syntaksi
ParseJSON( JSONString [ , Type ] )
- JSONString – Pakollinen. Tekstinä esitetty JSON-rakenne.
- Type - valinnainen. JSON-rakenteen Power Fx-tyyppimääritys. Ilman tätä argumenttia ParseJSON palauttaa tyypittämättömän objektin; argumentin kanssa funktio palauttaa vahvasti tyypitetyn objektin.
Tyypittämättömän objektin tietotyypin muuntaminen
Ilman toista argumenttia ParseJSON palauttaa tyypittämättömän objektin, joka edellyttää tuettujen tietotyyppien kenttien arvojen eksplisiittistä muuntamista. Seuraavassa taulukossa on esitetty Power Appsin tietotyypit, niitä vastaava JSON-tietotyyppi ja miten muuntaa se.
Tietotyyppi | JSON-esimerkit | Description | Esimerkki muuntamisesta |
---|---|---|---|
Totuusarvo | { "bool": true } |
Totuusarvo on JSON:n eksplisiittinen tyyppi, ja se voidaan muuntaa suoraan. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
Color | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
JSON:ssä ei ole värityyppiä. Väriarvot voidaan luoda RGBA-kokonaisluvuista tai heksadesimaalimerkkijonoista. |
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 ) ) ) |
Valuutta, Numero | { "numbervalue": 123.5 } |
Numerot esitetään JSON:ssä suoraan, ja piste (.) toimii desimaalierottimena. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
Päivämäärä, Päivämäärä ja aika, Aika | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON:llä ei ole päivämäärä- tai aikatyyppiä, joten se voi esittää päivämäärät ja kellonajat vain merkkijonoina. Tyypittämätön objekti voidaan muuntaa suoraan ISO 8601 -muodossa olevasta merkkijonosta päivämäärä-, aika- tai päivämäärä/aika-arvoksi. Kun käytät muita muotoja, muunna JSON-kenttä ensin tekstiksi käyttämällä funktiota Text() ja käytä sitten funktiota DateValue(), TimeValue() tai DateTimeValue(), joka käyttää oletusarvoisesti tämänhetkisen käyttäjän asetusten kieltä. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON:llä ei ole tietotyyppiä GUID-tunnuksille, joten ne voidaan esittää vain merkkijonoina. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
Hyperlinkki, Kuvia, Media | { "URI": "https://northwindtraders.com/logo.jpg" } |
Nämä tietotyypit ovat tekstitietotyyppejä, ja ne voidaan muuntaa tekstiksi ja käyttää sitten Power Appsissa. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI ) |
Valinta | { "status": 1 } { "status": "Closed" } |
Vaihtoehdot esitetään lokalisoituina merkkijonoina, joiden perässä on numero. JSON()-funktio antaa vaihtoehdolle sarjanumeron sen perässä olevan numeron perusteella. Numeroa tai merkkijonoa ei voi muuntaa suoraan vaihtoehdoksi, mutta funktioita Switch() ja If() voidaan käyttää teksti- tai numeroarvolle. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
Nauhoita | { "field": "value" } |
JSON-objektia ei voi muuntaa suoraan tietuerakenteeksi, mutta tyypittämättömästä objektista voidaan noutaa yksittäisiä kenttiä tietueen muodostamiseksi. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
Tietueviittaus | Ei käytettävissä | Tietueviittaukset ovat yksilöllisiä tietolähteille, eikä niitä voi sarjoittaa eikä niiden sarjoitusta voi kumota. Yksilöllisiä avaimia esittäviä kenttäarvoja voidaan käyttää JSON:ssä haettavien tietueiden tunnistamiseen. | Ei käytettävissä |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON voi sisältää matriiseja, jotka voidaan muuntaa taulukoiksi. Nämä arvot voivat olla tietueiden matriiseja tai arvojen matriiseja, jotka ovat käytännössä yksisarakkeisia taulukoita. ParseJSON()-matriisit voidaan muuntaa vain tyypittämättömien objektien yksisarakkeiseksi taulukoksi, ja niitä voidaan käyttää sellaisenaan tai ne voidaan muuntaa tietueiden tyypitetyksi taulukoksi käyttämällä ForAll()-funktiota. | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
Viesti | { "stringField": "this is text" } |
Teksti on JSON:n eksplisiittinen tyyppi, ja se voidaan muuntaa suoraan. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
Kaksi asetusta | { "available": true } { "available": "Yes" } |
Kahden asetuksen kenttä esitetään lokalisoituina merkkijonoina, joiden perässä on totuusarvo. JSON()-funktio sarjoittaa kahden asetuksen kentän sen totuusarvoksi. Totuusarvoa, numeroa tai merkkijonoa ei voi muuntaa suoraan kahden asetuksen kentäksi, mutta funktioita Switch() ja If() voidaan käyttää teksti-, numero- tai totuusarvolle. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Esimerkkejä
Kenttäarvojen käyttäminen
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Seuraava kaava palauttaa tekstin
text value
:Text( ParseJSON( JsonString ).parent.child )
- Seuraava kaava palauttaa numeron
567
:Value( ParseJSON( JsonString ).number )
Jos kentän nimi koostuu virheellisestä tunnistenimestä, voit laittaa kenttien nimet yksinkertaisiin lainausmerkkeihin.
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "0": { "child-field": "text value" } }
- Seuraava kaava palauttaa tekstin
text value
:Text( ParseJSON( JsonString ).'0'.'child-field' )
Tyhjät arvot
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Jos funktio yrittää käyttää kenttiä, joita ei ole olemassa, se palauttaa arvon Blank(). Seuraava kaava palauttaa arvon
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- JSON:n
null
-arvojen tulkitaan olevan Blank(). Seuraava kaava palauttaa arvontrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Yksinkertaiset matriisit
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "array": [1, 2, 3] }
- Jos yrität käyttää matriisikentän tyypittämättömän objektin yksisarakkeisen taulukon toista numeroa ja muuntaa sen numeroksi käyttämällä Value()-funktiota, funktio palauttaa arvon
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Matriisikentässä olevan tyypittämättömän objektin yksisarakkeisen taulukon muuntaminen numeroiden yksisarakkeiseksi taulukoksi
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Tietuematriisi
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Tyypitetyn tietuetaulukon muuntaminen suoraan ForAll():n avulla voidaan tehdä käyttämällä toimintoa
ThisRecord.[fieldname]
tyypittämättömän objektin kenttien käyttämiseen ja niiden muntamiseen tunnetuiksi tyypeiksi.ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matriisista taulukoksi
-
Tyypittämättömän objektin muuntaminen taulukoksi käyttämällä Table()-funktiota tuottaa yksisarakkeisen tyypittämättömien objektien taulukon. Objektia on tämän jälkeen käytettävä käyttämällä (yksittäistä)
Value
-saraketta, ja se on muunnettava tyypeiksi edellä kerrotulla tavalla.
Jos seuraava JSON-merkkijono on muuttujassa nimeltään JsonString
{ "array": [1, 2, 3] }
Table() palauttaa yksisarakkeisen taulukon tyypittämättömiä objekteja, jossa on yksisarakkeinen arvo matriisissa olevalle numerolle...
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() palauttaa yhden sarakkeen taulukon, jossa on tyypittämättömiä objekteja, jotka edustavat kutakin matriisin json-objektia.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )