ParseJSON függvény

A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások Power Platform CLI

Értelmez egy JSON-sztringet, és visszaad egy típus nélküli objektumot.

Description

A ParseJSON függvény egy érvényes JSON-sztringet elemez, és a JSON szerkezetét képviselő, típus nélküli objektumot ad vissza.

A ParseJSON függvény hibákat adhat vissza, ha a szöveg nem érvényes JSON az ECMA-404-ben és az IETF RFC 8259-ben ismertetett JavaScript Object Notation (JSON) formátum szerint.

Szintaxis

ParseJSON( JSONString )

  • JSONString – Kötelező. A szövegként megjelenő JSON-struktúra.

Típus nélküli objektum adattípus konvertálása

Az ParseJSON egy típus nélküli objektumot ad eredményül, amelyhez a mezőértékek kifejezett átalakítása szükséges a támogatott adattípusok esetén. 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
Boolean { "bool": true } A logikai egy explicit típus a JSON-ban, amely közvetlenül átalakítható. Boolean( 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 típus nélküli objektumok közvetlenül átalakíthatók ISO 8601 formátumú sztringből dátummá, idővé vagy datetime értékké. 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("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""találkozó"": ""2022. május 5."" }").appointment ) )
GUID-azonosító { "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( "{ ""állapot"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Rögzítés { "field": "value" } JSON-objektum nem alakítható át közvetlenül rekordstruktúrává, de az egyes mezők lekérhetők a típus nélküli objektumból rekordok létrehozásához. { field: Text( ParseJSON( "{ ""mező"": ""érték"" }" ).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. A ParseJSON() tömbök csak egyoszlopos, típus nélküli objektum táblákká alakíthatók át, és így is használhatók, illetve a ForAll() használatával rekordok típussal rendelkező táblájává alakíthatók. ForAll( Table( ParseJSON( "[ { ""azonosító"": 1, ""név"": ""egy"" }, { ""azonosító"": 2, ""név"": ""kettő"" } ]" ) ), { 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( Boolean( ParseJSON( "{ ""elérhető"": 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ő típus nélküli objektumának egyoszlopos táblájában való második számhoz való hozzáférés, és a Value() függvénnyel való számmá alakítás a 2 értékes adja vissza:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. A típus nélküli objektumú egyoszlopos tábla átalakítása a tömbmezőben egyoszlopos számtáblává ({ Value: 1 }, { Value: 2 }, { Value: 3 }):
    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 típussal rendelkező rekordtáblává való átalakítás közvetlenül a ForAll() függvény használatával csak a ThisRecord.[fieldname] használatával lehetséges, amellyel hozzáférhet a típus nélküli objektum mezőkhöz és átalakíthatja azokat az ismert típusokká:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Tömbből tábla

  1. Ha a típus nélküli objektumokat táblává alakítja át a Table() funkcióval, akkor eredményül egy egyoszlopos táblát kap típus nélküli objektumokkal. 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 típus nélküli objektumos egyoszlopos táblát ad eredményül, amelynek egy Érték oszlopa van a mező számaihoz...

 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 típus nélküli objektumos egyoszlopos táblát ad eredményül, amely a tömb egyes JSON-objektumait jelöli.

  Set(untypedTable, Table( ParseJSON( JsonString ).array );
  
  Text( Index(untypedTable, 1).Value.name )