Megosztás:


ParseJSON függvény

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

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 }
  1. A következő képlet a(z) text value szöveget jeleníti meg:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. A következő képlet a(z) 567 szá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" } }
  1. A következő képlet a(z) text value szö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 }
  1. 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 ) )
    
  2. A null JSON-értékek Blank() értékeknek minősülnek. Az alábbi képlet visszaadott értéke true:
    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] }
  1. 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 ) )
    
  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"}
    ] }
  1. 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

  1. 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 )