Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Aplikace
plátna Copilot Studio
Modelem řízené aplikace
Power Platform CLI
– funkce
Power Pages
Interpretuje řetězec JSON a vrátí dynamickou hodnotu nebo konkrétní typovou hodnotu, pokud je zadaný typ.
Důležité
- Použití druhého argumentu k ParseJSON převodu na typový objekt je experimentální funkce.
- Experimentální funkce nejsou určené pro normální používání a mohou mít omezené fungování. Jsou to funkce, které jsou poskytnuté před oficiálním vydáním, abyste si je mohli co nejdříve vyzkoušet a napsat nám své názory. Další informace: Popis experimentálních a vyřazených funkcí nebo funkcí Preview v aplikacích plátna
- Chování, které tento článek popisuje, je k dispozici pouze v případě, že je zapnuta experimentální vlastnost Uživatelem definované typy v části Nastavení > Připravované funkce > Experimentální (ve výchozím nastavení je vypnutá).
- Vaše zpětná vazba je pro nás velmi cenná. Dejte nám prosím vědět, co si myslíte, v komunitním fóru experimentálních funkcí Power Apps.
Description
Funkce ParseJSON parsuje platný řetězec JSON a vrátí dynamickou hodnotu představující strukturu JSON.
Volitelně můžete pomocí druhého argumentu převést JSON na typový objekt, který lze přímo použít ve vzorcích Power Fx. To usnadňuje konzumaci výsledku, protože konverze a nátlak v místě použití již nejsou nutné. Netypovaný JSON je namapován na typ s těmito pravidly:
- Sloupce v typu, které nejsou přítomny v kódu JSON, jsou vyplněny jako prázdné.
- Sloupce ve formátu JSON, které nejsou přítomny v typu, jsou ignorovány.
- V případě sloupců, které jsou v typu i kódu JSON, musí být hodnota JSON vynutitelná na daný typ.
Funkce ParseJSON může vrátit chyby, pokud text není platný JSON podle formátu JSON (JavaScript Object Notation) popsaného v ECMA-404 a IETF RFC 8259.
Syntaxe
ParseJSON( JSONString [ , Type ] )
- JSONString – povinné. Struktura JSON reprezentovaná jako text.
- Type – Volitelné. Definice typu Power Fx pro strukturu JSON. Bez tohoto argumentu ParseJSON vrátí dynamickou hodnotu. Funkce vrátí konkrétní zadaná hodnota.
Převod dynamických hodnot
Bez druhého argumentu vrátí dynamickou hodnotu, ParseJSON která vyžaduje explicitní převod hodnot polí v podporovaných datových typech. Následující tabulka uvádí datové typy v Power Apps a odpovídající datový typ JSON, a jak ho převést.
| Datový typ | Příklady JSON | Description | Příklad převodu |
|---|---|---|---|
| logický | { "bool": true } |
Boolean je explicitní typ v JSON a lze ho přímo převést. | Logická hodnota( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
V JSON není žádný typ barvy. Hodnoty barev lze vytvořit z celých čísel RGBA nebo hexadecimálních řetězců. |
ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"":255; ""g": 128; "b": 0, "a""": 0,5 }" ) }; RGBA( Value( uo.r ); Value( uo.r ); Value( uo.b ); Value( uo.a ) ) ) |
| Měna, číslo | { "numbervalue": 123.5 } |
Čísla jsou reprezentována přímo v JSON s tečkou (.) jako oddělovačem desetinných míst. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| Datum, datum a čas, čas | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON nemá typ data nebo času, takže může reprezentovat data a časy pouze jako řetězce. Dynamickou hodnotu lze přímo převést z řetězce ve formátu ISO 8601 na datum, čas nebo datum a čas. U jiných formátů nejprve převeďte pole JSON na text pomocí funkce Text() a poté použijte funkci DateValue(), TimeValue() nebo DateTimeValue(), která ve výchozím nastavení použije jazyk nastavení aktuálního uživatele. |
DateValue( ParseJSON("{ ""událost""": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""událost"":"5. května 2022"" }").appointment ) ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON nemá datový typ pro GUId, takže je lze reprezentovat pouze jako řetězce. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| Hypertextový odkaz, obrázek, médium | { "URI": "https://northwindtraders.com/logo.jpg" } |
Tyto datové typy jsou textové datové typy a lze je převést na text a poté použít v Power Apps. | Text( ParseJSON("{ ""URI"": "";https://northwindtraders.com/logo.jpg"" }"). Identifikátor URI ) |
| Výběr | { "status": 1 }{ "status": "Closed" } |
Volby jsou prezentovány jako lokalizované řetězce podložené číslem. Funkce JSON() serializuje volbu na její podpůrné číslo. Neexistuje žádný přímý převod z čísla nebo řetězce na volbu, ale funkce Switch() nebo If() lze použít na textovou nebo číselnou hodnotu. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ); 0; Status.Open; 1; Status.Closed ) |
| Zaznamenat | { "field": "value" } |
Neexistuje žádný přímý převod objektu JSON na strukturu záznamů, ale jednotlivá pole lze načíst z dynamické hodnoty a vytvořit záznam. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Reference záznamu | nelze použít | Reference záznamů jsou jedinečné pro zdroje dat a nelze je serializovat ani zrušit serializaci. Hodnoty polí, které představují jedinečné klíče, lze v JSON použít k identifikaci záznamů, které lze následně vyhledat. | nelze použít |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON může obsahovat pole, která lze převést na tabulky. Tyto hodnoty mohou být pole záznamů nebo pole hodnot, které jsou ve skutečnosti tabulkami s jedním sloupcem. ParseJSON() Matice lze převést pouze na tabulku s jedním sloupcem dynamických hodnot a lze je použít jako takové nebo převést na typové tabulky záznamů pomocí forAll(). | ForAll( Table( ParseJSON( "[ { ""id"":1; ""name": ""one"" }; { ""id": 2; ""name": ""two"} ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| Text | { "stringField": "this is text" } |
Text je explicitní typ v JSON a lze ho přímo převést. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
| Dvě možnosti | { "available": true }{ "available": "Yes" } |
Dvě možnosti jsou prezentovány jako lokalizované řetězce podložené logickou hodnotou. Funkce JSON() serializuje dvě možnosti na jejich logickou hodnotu. Neexistuje žádný přímý převod z logické hodnoty, čísla nebo řetězce na dvě možnosti, ale funkce Switch() nebo If() lze použít na textovou, číselnou nebo logickou hodnotu. | Switch( Boolean( ParseJSON( " { ""available"": true }" ).available ), false, Availability.No; true; Availability.Yes ) |
Příklady
Přístup k hodnotám polí
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Následující vzorec vrátí text
text value:Text( ParseJSON( JsonString ).parent.child ) - Následující vzorec vrátí číslo
567:Value( ParseJSON( JsonString ).number )
V případě, že název pole obsahuje neplatný název identifikátoru, můžete názvy polí uvést do jednoduchých uvozovek.
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "0": { "child-field": "text value" } }
- Následující vzorec vrátí text
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Prázdné hodnoty
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Pokus o přístup k neexistujícím polím vrátí Blank(). Následující vzorec vrátí
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Hodnoty JSON
nullse považují za Blank(). Následující vzorec vrátítrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Jednoduchá pole
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "array": [1, 2, 3] }
- Přístup k druhému číslu v tabulce s jedním sloupcem pole dynamických hodnot a převod na číslo pomocí funkce Value() vrátí
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Převod tabulky s jedním sloupcem dynamických hodnot v poli pole na tabulku s jedním sloupcem čísel
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Pole záznamů
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Převod na typovou tabulku záznamů přímo pomocí příkazu ForAll() lze provést pomocí
ThisRecord.[fieldname]přístupu k dynamickým polím a jejich převodem na konkrétní typy:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Pole na tabulku
- Převodem dynamických hodnot na tabulku pomocí funkce Table() vznikne tabulka s jedním sloupcem dynamických hodnot. K objektu je pak třeba přistupovat pomocí (jednoho) sloupce
Valuea převést na typy, jak bylo vysvětleno výše.
Když máme následující řetězec JSON v proměnné s názvem JsonString
{ "array": [1, 2, 3] }
Table() vrátí tabulku s jedním sloupcem dynamických hodnot s hodnotou s jedním sloupcem pro číslo v matici...
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() vrátí tabulku s jedním sloupcem dynamických hodnot, která představuje každý objekt JSON v poli.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )