Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na: Aplikácie plátna Aplikácie Copilot Studio
Modelom riadené aplikácie
Power Platform CLI
Dataverse funkcie
Power Pages
Interpretuje reťazec JSON a vráti dynamickú hodnotu alebo konkrétnu zadanú hodnotu, ak je zadaný typ.
Dôležité
- Použitie druhého argumentu na ParseJSON konverziu na zadaný objekt je experimentálna funkcia.
- Experimentálne funkcie nie sú určené na produkčné účely a môžu mať obmedzenú funkčnosť. Tieto funkcie sú k dispozícii pred oficiálnym vydaním, takže môžete získať skorý prístup a poskytnúť spätnú väzbu. Ďalšie informácie: Vysvetlenie experimentálnych, ukážkových a vyradených funkcií v aplikácii plátna
- Správanie, ktoré popisuje tento článok, je k dispozícii iba v prípade, ak je experimentálna funkcia Typy definované používateľom v Nastavenia > Nadchádzajúce funkcie > Experimentálne je zapnuté (v predvolenom nastavení je vypnuté).
- Vaša spätná väzba je pre nás veľmi cenná. Dajte nám vedieť, čo si myslíte v Power Apps komunitnom fóre experimentálnych funkcií.
Description
Funkcia ParseJSON analyzuje platný reťazec JSON a vráti dynamickú hodnotu predstavujúcu štruktúru JSON.
Voliteľne použite druhý argument na konverziu JSON na typizovaný objekt, ktorý možno priamo použiť vo vzorcoch Power Fx . To uľahčuje konzumáciu výsledku, pretože konverzie a nátlaky v mieste použitia už nie sú potrebné. JSON bez typu sa mapuje na typ s týmito pravidlami:
- Stĺpce typu, ktoré sa nenachádzajú v JSON, sú vyplnené prázdnym.
- Stĺpce v JSON, ktoré nie sú prítomné v type, sa ignorujú.
- Stĺpce, ktoré sú v type aj JSON, hodnota JSON musí byť koercibilná s typom.
Funkcia ParseJSON môže vrátiť chyby, ak text nie je platný JSON podľa formátu javascriptového zápisu objektu (JSON) opísaného v normách ECMA-404 a IETF RFC 8259.
Syntax
ParseJSON( JSONString [ , Type ] )
- JSONString – povinné. Štruktúra JSON reprezentovaná ako text.
- Typ – voliteľné. Power Fx definícia typu pre štruktúru JSON. Bez tohto argumentu ParseJSON vráti dynamickú hodnotu. S ňou funkcia vráti konkrétnu zadanej hodnoty.
Konverzia dynamických hodnôt
Bez druhého argumentu vráti dynamickú hodnotu, ParseJSON ktorá vyžaduje explicitnú konverziu hodnôt polí v podporovaných typoch údajov. Nasledujúca tabuľka uvádza typy údajov v Power Apps a zodpovedajúci typ údajov JSON a spôsob ich konverzie.
| Typ údajov | Príklady JSON | Description | Príklad konverzie |
|---|---|---|---|
| booleovský | { "bool": true } |
Boolean je explicitný typ v JSON a možno ho priamo konvertovať. | Boolean( ParseJSON("{ ""bool"": true }"). bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
V JSON neexistuje žiadny typ farby. Hodnoty farieb je možné vytvoriť z celých čísel RGBA alebo z hexadecimálnych reťazcov. |
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 ) ) ) |
| Mena, číslo | { "numbervalue": 123.5 } |
Čísla sú reprezentované v JSON priamo s bodkou (.) ako oddeľovačom desatinných miest. | Value( ParseJSON("{ ""numbervalue"": 123.5 }"). numbervalue ) |
| Dátum, Dátum a čas, čas | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON nemá typ dátumu alebo času, takže môže reprezentovať dátumy a časy iba ako reťazce. Dynamickú hodnotu je možné priamo skonvertovať z reťazca vo formáte ISO 8601 na dátum, čas alebo dátum a čas. Pri iných formátoch najskôr konvertujte pole JSON na text pomocou funkcie Text() a potom použite funkciu DateValue(), TimeValue() alebo DateTimeValue(), ktorá predvolene použije jazyk nastavení aktuálneho používateľa. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }"). appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""5. mája 2022"" }"). appointment ) ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON nemá typ údajov pre GUID, takže môžu byť reprezentované iba ako reťazce. | GUID( ParseJSON("{ ""id": ""123e4567-e89b-12d3-a456-426655440000"" }"). id ) |
| Hypertextový odkaz, obrázok, médiá | { "URI": "https://northwindtraders.com/logo.jpg" } |
Tieto typy údajov sú textové typy údajov a možno ich previesť na text a potom použiť v Power Apps. | Text( ParseJSON("{ ""URI": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Voľba | { "status": 1 }{ "status": "Closed" } |
Voľby sú prezentované ako lokalizované reťazce podložené číslom. Funkcia JSON() serializuje voľbu na podkladové číslo. Neexistuje žiadny priamy prevod z čísla alebo reťazca na voľbu, ale funkcie Switch() alebo If() možno použiť na textovú alebo číselnú hodnotu. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Record | { "field": "value" } |
Neexistuje žiadna priama konverzia z objektu JSON na štruktúru záznamu, ale jednotlivé polia možno načítať z dynamickej hodnoty na vytvorenie záznamu. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Odkaz na záznam | nevzťahuje sa | Odkazy na záznamy sú jedinečné pre zdroje údajov a nie je možné ich serializovať ani zrušiť ich serializáciu. Hodnoty polí, ktoré predstavujú jedinečné kľúče, sa dajú použiť v JSON na identifikáciu záznamov, ktoré je možné následne vyhľadať. | nevzťahuje sa |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON môže obsahovať polia, ktoré je možné previesť na tabuľky. Tieto hodnoty môžu byť polia záznamov alebo polia hodnôt, ktoré sú v skutočnosti tabuľkami s jedným stĺpcom. ParseJSON() Polia možno skonvertovať iba do tabuľky s jedným stĺpcom dynamických hodnôt a možno ich použiť alebo skonvertovať na zadané tabuľky záznamov pomocou funkcie ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id": 2, ""name": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), názov: Text(ThisRecord.Value.name) } ) |
| SMS správa | { "stringField": "this is text" } |
Text je explicitný typ v JSON a možno ho priamo konvertovať. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }"). stringField ) |
| Dve možnosti | { "available": true }{ "available": "Yes" } |
Dve voľby sú prezentované ako lokalizované reťazce podložené booleovskou hodnotou. Funkcia JSON() serializuje dve možnosti na svoju booleovskú hodnotu. Neexistuje žiadny priamy prevod z booleovskej hodnoty, čísla alebo reťazca na dve voľby, ale funkcie Switch() alebo If() možno použiť na textovú, číselnú alebo booleovskú hodnotu. | Switch( Boolean( ParseJSON( "{ ""available": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Príklady
Prístup k hodnotám poľa
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Nasledujúci vzorec vráti text
text value:Text( ParseJSON( JsonString ).parent.child ) - Nasledujúci vzorec vráti číslo
567:Value( ParseJSON( JsonString ).number )
V prípade, že názov poľa pozostáva z neplatného názvu identifikátora, môžete názvy polí vložiť do jednoduchých úvodzoviek.
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "0": { "child-field": "text value" } }
- Nasledujúci vzorec vráti text
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Prázdne hodnoty
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Pokus o prístup k neexistujúcim poliam vráti Blank(). Nasledujúci vzorec vráti
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Hodnoty JSON
nullsa považujú za Blank(). Nasledujúci vzorec vrátitrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Jednoduché polia
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "array": [1, 2, 3] }
- Prístup k druhému číslu v tabuľke s jedným stĺpcom poľa s dynamickými hodnotami a konverzia na číslo pomocou funkcie Value() vráti hodnotu
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Konverzia tabuľky s jedným stĺpcom dynamických hodnôt v poli poľa na tabuľku s jedným stĺpcom čísel
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Polia záznamov
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Konverzia na typeovú tabuľku záznamov priamo pomocou funkcie ForAll() sa dá vykonať pomocou
ThisRecord.[fieldname]funkcie na prístup k dynamickým poliam a ich konverziu na konkrétne typy:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Pole na tabuľku
- Výsledkom konverzie dynamických hodnôt na tabuľku pomocou funkcie Table() je tabuľka s jedným stĺpcom dynamických hodnôt. K objektu je potrebné pristupovať pomocou (jediného) stĺpca
Valuea je potrebné ho skonvertovať na typy, ako bolo vysvetlené vyššie.
Nasledujúci reťazec JSON je premenná s názvom JsonString
{ "array": [1, 2, 3] }
Table() vráti tabuľku s jedným stĺpcom dynamických hodnôt s hodnotou v jednom stĺpci pre číslo v poli...
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"}
] }
Funkcia Table() vráti tabuľku s jedným stĺpcom dynamických hodnôt, ktorá predstavuje každý objekt json v poli.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )