Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Vászonalapú alkalmazások
Copilot Studio
Modellalapú alkalmazások
Power Platform CLI
Dataverse-függvények
Power Pages
Értelmez egy JSON-sztringet, és egy dinamikus vagy egy adott típusú értéket ad vissza, ha egy típus meg van adva.
Fontos
- A második argumentum ParseJSON használata gépelt objektummá való konvertáláshoz kísérleti funkció.
- A kísérleti funkciókat nem célszerű termelési környezetben használni, és előfordulhat, hogy korlátozott funkcionalitással rendelkeznek. Ezek a funkciók a hivatalos kiadás előtt érhetők el, így korai hozzáférést kaphat, és visszajelzést küldhet. További információ: A vászonalapú alkalmazások kísérleti, előzetes verziójú és kivezetett funkcióinak áttekintése
- A cikkben ismertetett viselkedés csak akkor érhető el, ha a Felhasználó által definiált típusok kísérleti funkció be van kapcsolva a Beállítások Közelgő funkciók > kísérleti > funkciójában (alapértelmezés szerint ki van kapcsolva).
- Visszajelzése nagyon értékes számunkra. Kérjük, ossza meg velünk véleményét a Power Apps kísérleti funkciók közösségi fórumán.
Description
A ParseJSON függvény egy érvényes JSON-sztringet elemez, és a JSON-struktúrát képviselő dinamikus értéket ad vissza.
Ha szükséges, használja a második argumentumot a JSON képletekben Power Fx közvetlenül használható típusos objektummá konvertálásához. Ez megkönnyíti az eredmény felhasználását, mivel a használat helyén már nincs szükség konverziókra és kényszerítésekre. A nem típusos JSON a következő szabályokkal van leképezve a típusra:
- A JSON-ban nem szereplő típusú oszlopok üres színnelvannak kitöltve.
- A JSON azon oszlopait, amelyek nem szerepelnek a típusban, a rendszer figyelmen kívül hagyja.
- A típusban és a JSON-ban is lévő oszlopok JSON-értékének kényszeríthetőnek kell lennie a típushoz.
A ParseJSON függvény akkor ad vissza hibákat, ha a szöveg nem érvényes JSON-ként az ECMA-404-ben és az IETF RFC 8259-ben leírt JavaScript Object Notation (JSON) formátum szerint.
Szintaxis
ParseJSON( JSONString [ , Type ] )
- JSONString – Kötelező. A szövegként megjelenő JSON-struktúra.
- Típus - Nem kötelező. A Power Fx JSON-struktúra típusdefiníciója. Ezen argumentum ParseJSON nélkül egy dinamikus értéket ad vissza, vele együtt a függvény egy adott beírt értéket ad vissza.
Dinamikus értékek konvertálása
A második argumentum nélkül dinamikus értéket ad vissza, ParseJSON amely a támogatott adattípusok mezőértékeinek explicit átalakítását igényli. A következő tábla a Power Apps szolgáltatás adattípusait sorolja fel, a neki megfelelő JSON-adattípussal, illetve az átalakítás folyamatával együtt.
| Adattípus | Példák JSON-ra | Description | Példa átalakításra |
|---|---|---|---|
| logikai | { "bool": true } |
A logikai egy explicit típus a JSON-ban, amely közvetlenül átalakítható. | Logikai( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
A JSON-ban nincs színtípus. A színértékek RGBA-integerekből vagy hexadecimális sztringekből is létrehozható. |
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 ) ) ) |
| Pénznem, Szám | { "numbervalue": 123.5 } |
A számok közvetlenül a JSON-ban jelennek meg, és a pont ( . ) tizedesjelként jelenik meg. | Value( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue ) |
| Dátum, DateTime, Idő | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
A JSON nem rendelkezik dátum- vagy időtípussal, így a dátumokat és időket csak sztringekként tudja megjeleníteni. A dinamikus értékek közvetlenül konvertálhatók iso 8601 formátumú sztringből dátum, idő vagy dátum/idő formátumba. Már formátumok esetében először alakítsa Text() fügvénnyé a JSON-mezőt, majd használja a DateValue(), a TimeValue() vagy a DateTimeValue() függvényeket, amelyek alapértelmezés szerint az aktuális felhasználó beállításaiban megadott nyelvet fogják használni. |
DateValue( ParseJSON("{ ""találkozó"": ""2022-05-10"" }").találkozó ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
A JSON nem tartalmaz GUID-adattípust, így csak sztringekként jelenítheti meg őket. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| Hivatkozás, Kép, Média | { "URI": "https://northwindtraders.com/logo.jpg" } |
Ezek az adattípusok szöveges adattípusok, és szöveggé alakíthatók, majd felhasználhatók a Power Apps rendszerben. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Választási lehetőség | { "status": 1 }{ "status": "Closed" } |
A választási lehetőségek honosított sztringként jelennek meg, amelyet egy szám támogat. A JSON() függvény szerializál egy választási lehetőséget a támogatási számához. A számok és a sztringek nem alakíthatók át közvetlenül választási lehetőséggé, de a Switch() vagy az If() használhatók a szöveges vagy számértékekhez. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Rögzítés | { "field": "value" } |
A JSON-objektumból nincs közvetlen átalakítás rekordstruktúrává, de az egyes mezők lekérhetők a Dinamikus értékből egy rekord létrehozásához. | { mező: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Rekord hivatkozása | n.a. | A rekordhivatkozások egyediek az adatforrásokban, és nem szerializálhatók, illetve a folyamat nem is fordítható vissza. Az egyedi kulcsokat jelképező mezőértékek használhatók a JSON-ban a rekordok azonosítására, amelyekre így rá lehet keresni. | n.a. |
| Tábla | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
A JSON tartalmazhat tömböket, amelyek táblákká alakíthatók. Ezek az értékek rekordtömbök vagy értéktömbök lehetnek, amelyek hatékonyan használhatók egyoszlopos táblákhoz. ParseJSON() a tömbök csak dinamikus értékeket tartalmazó egyetlen oszloptáblává alakíthatók át, és a ForAll() használatával használhatók ilyenként, vagy átalakíthatók beírt rekordtáblákká. | ForAll( Table( ParseJSON"[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) ) |
| Szöveges | { "stringField": "this is text" } |
A szöveges egy explicit típus a JSON-ban, amely közvetlenül átalakítható. | Text( ParseJSON( "{ ""stringField"": ""ez szöveg"" }").stringField ) |
| Két lehetőség | { "available": true }{ "available": "Yes" } |
A két érték honosított sztringként jelenik meg, amelyeket egy logikai érték támogat. A JSON() függvény a két értéket a logikai értékükké szerializálja. A logikai értékek, számok és a sztringek nem alakíthatók át közvetlenül két lehetőséggé, de a Switch() vagy az If() használhatók a szöveges, szám- vagy logikai értékekhez. | Switch( Logikai( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Példák
Mezőértékekhez való hozzáférés
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "parent": { "child": "text value" }, "number": 567 }
- A következő képlet a(z)
text valueszöveget jeleníti meg:Text( ParseJSON( JsonString ).parent.child ) - A következő képlet a(z)
567számot jeleníti meg:Value( ParseJSON( JsonString ).number )
Abban az esetben, ha a mezőnév érvénytelen azonosítónevet tartalmaz, a mezőneveket egyszeres idézőjelek közé lehet tenni.
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "0": { "child-field": "text value" } }
- A következő képlet a(z)
text valueszöveget jeleníti meg:Text( ParseJSON( JsonString ).'0'.'child-field' )
Üres értékek
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "text": "text value" , "number": 567, "empty": null }
- A nem létező mezők elérésére tett kísérlet Blank() értéket ad vissza. Az alábbi képlet visszaadott értéke
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - A
nullJSON-értékek Blank() értékeknek minősülnek. Az alábbi képlet visszaadott értéketrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Egyszerű tömbök
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "array": [1, 2, 3] }
- A tömbmező dinamikus értékekből álló egyoszlopos táblájának második számához való hozzáférés és számmá konvertálás a Value() függvény használatával a következőt adja
2vissza:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - A tömbmezőben lévő dinamikus értékek egyoszlopos táblázatának átalakítása egyetlen számoszlopos
{ Value: 1 }, { Value: 2 }, { Value: 3 }táblázattá:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Rekordok tömbje
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
A közvetlenül a ForAll() használatával gépelt rekordtáblává való konvertálás a
ThisRecord.[fieldname]mezők elérésével és adott típusúvá alakításával végezhető el:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Tömbből tábla
- Ha a dinamikus értékeket táblázattá alakítja a Table() függvény használatával, az egyoszlopos dinamikus értékeket tartalmazó táblát eredményez. Ezt követően az objektumhoz a
Value(egyszeres) oszloppal férhet hozzá, a korábban ismertetett lépéseket követve pedig más típusokká alakítható át.
Vegyük a következő JSON-sztringet egy JsonString nevű változóban
{ "array": [1, 2, 3] }
A Table() egy egyoszlopos dinamikus értékeket tartalmazó táblát ad eredményül, amely egyoszlopos számértékkel rendelkezik a tömbben...
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"}
] }
A Table() egy egyoszlopos dinamikus értékeket tartalmazó táblázatot ad vissza, amely a tömb minden json-objektumát képviseli.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )