Zdieľať cez


Funkcia ParseJSON

Vzťahuje sa na: aplikácie plátna aplikácie riadené modelom Power Pages Power Platform CLI

Interpretuje reťazec JSON a vráti netypový objekt.

Description

Funkcia ParseJSON analyzuje platný reťazec JSON a vráti netypový objekt reprezentujúci štruktúru JSON.

Funkcia ParseJSON môže vrátiť chyby, ak text nie je platný JSON podľa formátu JavaScript Object Notation (JSON) popísaného v ECMA-404 a IETF RFC 8259.

Syntax

ParseJSON( JSONString )

  • JSONString – povinné. Štruktúra JSON reprezentovaná ako text.

Konverzia typu údajov netypového objektu

ParseJSON vráti netypový objekt, 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
Boolean { "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 )
Date, DateTime, Time { "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. Netypový objekt bez typu možno priamo previesť 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"": ""May 5, 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 získať z netypového objektu a vytvoriť záznam. { 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. Polia ParseJSON() možno konvertovať iba na tabuľku s jedným stĺpcom netypových objektov a možno ich použiť ako také alebo konvertovať na typové tabuľky záznamy pomocou príkazu ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: 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 }
  1. Nasledujúci vzorec vráti text text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 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" } }
  1. 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 }
  1. Pokus o prístup k neexistujúcim poliam vráti Blank(). Nasledujúci vzorec vráti true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. Hodnoty JSON null sa považujú za Blank(). Nasledujúci vzorec vráti true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Jednoduché polia

Nasledujúci reťazec JSON je premenná s názvom JsonString

{ "array": [1, 2, 3] }
  1. Prístup k druhému číslu v jednostĺpcovej tabuľke poľa netypového objektu a prevod na číslo pomocou Value() vracia 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Konverzia jednostĺpcovej tabuľky netypového objektu v poli na jednostĺpcovú tabuľku čí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"}
    ] }
  1. Konverziu na typovú tabuľku záznamov priamo pomocou ForAll() je možné vykonať pomocou ThisRecord.[fieldname] na prístup k poliam netypovému objektu polia a ich konverziu na známe typy:

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

Pole na tabuľku

  1. Konverziou netypového objektuna tabuľku pomocou funkcie Table() vznikne jednostĺpcová tabuľka netypových objektov. K objektu je potrebné pristupovať pomocou (jediného) stĺpca Value a 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() vracia jednostĺpcovú tabuľku netypových objektov s jednostĺpcovou hodnotou 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"}
 ] }

Table() vracia jednostĺpcovú tabuľku netypových objektov, ktorá predstavuje každý objekt json v poli.

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