ParseJSON-funktio
Koskee seuraavia: Pohjaan perustuvat sovellukset Mallipohjaisten sovellusten Power Pages Power Platform CLI
Tulkitsee JSON-merkkijonon ja palauttaa tyypittämättömän objektin.
Description
ParseJSON-funktio jäsentää kelvollisen JSON-merkkijonon ja palauttaa JSON-rakennetta edustavan tyypittämättömän objektin.
ParseJSON-funktio saattaa palauttaa virheitä, jos teksti ei ole kelvollinen JSON-arvo standardeissa ECMA-404 ja IETF RFC 8259 kuvatun JavaScript Object Notation (JSON) -muodon mukaan.
Syntaksi
ParseJSON( JSONString )
- JSONString - Pakollinen. Tekstinä esitetty JSON-rakenne.
Tyypittämättömän objektin tietotyypin muuntaminen
ParseJSON palauttaa tyypittämättömän objektin, joka edellyttää, että kenttäarvot muunnetaan erikseen tuetuiksi tietotyypeiksi. 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. | totuusarvo( 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( "{ ""väri"": ""#102030""" }).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( arvo ( uo.r ), arvo ( uo.g ), arvo ( uo.b ), arvo ( uo.a ) ) |
Valuutta, Numero | { "numbervalue": 123.5 } |
Numerot esitetään JSON:ssä suoraan, ja piste (.) toimii desimaalierottimena. | Arvo( 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("{ ""tapaaminen"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""nimittäminen"": ""5. toukokuuta 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. | Kytkin( arvo( 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() -taulukot voidaan muuntaa vain kirjoittamattomien objektien yksisarakkeiseksi taulukoksi, ja niitä voidaan käyttää sellaisenaan tai muuntaa kirjoitetuiksi tietuetaulukoiksi ForAll() -funktiolla. | ForAll( Taulukko( ParseJSON( "[ { ""id"": 1, ""nimi"": ""yksi"" }, { "id"": 2, ""nimi"": ""kaksi""] } " ) ), { id: Arvo(ThisRecord.Value.id), nimi: Teksti(ThisRecord.Value.name) } ) |
Viesti | { "stringField": "this is text" } |
Teksti on JSON:n eksplisiittinen tyyppi, ja se voidaan muuntaa suoraan. | Text( ParseJSON( "{ "stringField"": ""tämä on teksti""" }).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( totuusarvo( 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 kirjoittamattomista objekteista koostuvan yksisarakkeisen taulukon, jossa on yksisarakkeinen luvun arvo...
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 kirjoittamattomista objekteista koostuvan yksisarakkeisen taulukon, joka edustaa matriisin kutakin json-objektia.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )