ParseJSON funkcija

Attiecas uz: Audekla programmas Copilot Studio Modeļa vadītas programmas Power Platform CLI Dataverse funkcijas Power Pages

Interpretē JSON virkni un atgriež dinamisko vērtību vai noteiktu ierakstītu vērtību, ja ir norādīts tips.

Description

Funkcija ParseJSON parsē derīgu JSON virkni un atgriež dinamisko vērtību, kas attēlo JSON struktūru.

Pēc izvēles izmantojiet otro argumentu, lai pārvērstu JSON par ierakstītu objektu, ko var tieši izmantot Power Fx formulās. Tas padara rezultātu vieglāk patērējamu, jo reklāmguvumi un piespiešana lietošanas vietā vairs nav nepieciešami. Neierakstītais JSON tiek kartēts uz tipu ar šādiem noteikumiem:

  • Tāda tipa kolonnas, kuru nav JSON, tiek aizpildītas ar tukšu.
  • JSON kolonnas, kuru nav tipā, tiek ignorētas.
  • Kolonnām, kas ir gan tipā, gan JSON, JSON vērtībai ir jābūt piespiežamai tipam.

Funkcija ParseJSON var atgriezt kļūdas, ja teksts nav derīgs JSON saskaņā ar JavaScript objekta notācijas (JSON) formātu, kas aprakstīts ECMA-404 un IETF RFC 8259.

Syntax

ParseJSON( JSONString [ , Tips ] )

  • JSONString - Obligāts. JSON struktūra, kas attēlota kā teksts.
  • Tips - Pēc izvēles. Power Fx JSON struktūras tipa definīcija. Bez šī argumenta ParseJSON atgriež dinamisku vērtību; līdz ar to funkcija atgriež noteiktu ierakstītu vērtību.

Dinamisko vērtību konvertēšana

Bez otrā argumenta atgriež ParseJSON, kas prasa nepārprotamu lauku vērtību konvertēšanu atbalstītajos datu tipos. Tālāk sniegtajā tabulā ir uzskaitīti datu tipi Power Apps un attiecīgais JSON datu tips un kā to konvertēt.

Data type JSON examples Description Example conversion
Būla { "bool": true } Būla ir izteikts JSON tips un to var konvertēt tieši. Boolean( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON nav krāsu tipa. Krāsu vērtības var izveidot, izmantojot veselus RGBA skaitļus vai heksadecimālas virknes. ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color )
Ar( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, "b"": 0, ""a"": 0.5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) )
Currency, Number { "numbervalue": 123.5 } Skaitļi tiek attēloti tieši JSON ar punktu (.) kā decimālatdalītāju. Value( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue )
Datums, datums, laiks, laiks { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON nav datuma vai laika tipa, tāpēc datumus un laikus var norādīt tikai kā virknes. Dinamisko vērtību var tieši konvertēt no virknes ISO 8601 formātā uz datumu, laiku vai datumu/laiku. Citiem formātiem vispirms konvertējiet JSON lauku uz tekstu, izmantojot funkciju Text() un pēc tam izmantojiet funkciju DateValue(), TimeValue() vai DateTimeValue(), kas pēc noklusējuma izmantos pašreizējo lietotāja iestatījumu valodu. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""2022. gada 5. maijs"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON nav datu tipa GUID, tāpēc tos var atveidot tikai kā virknes. GUID( ParseJSON("{ ""id"": "123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, Attēls, multivide { "URI": "https://northwindtraders.com/logo.jpg" } Šie datu tipi ir teksta datu tipi, un tos var pārvērst par tekstu un pēc tam izmantot Power Apps. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI )
Choice { "status": 1 }
{ "status": "Closed" }
Iespējas tiek norādītas kā lokalizētas virknes, dublētas ar skaitli. Funkcija JSON() serializē tās dublēšanas numura izvēli. Nevar veikt tiešu konvertēšanu no skaitļa vai virknes uz izvēli, bet funkcija Switch() vai If() var izmantot teksta vai skaitļa vērtībā. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Record { "field": "value" } Nav tiešas konvertēšanas no JSON objekta uz ieraksta struktūru, bet atsevišķus laukus var izgūt no dinamiskās vērtības, lai izveidotu ierakstu. { lauks: Text( ParseJSON( "{ ""lauks"": "vērtība"" }" ).lauks ) }
Record Reference n/a Ierakstu atsauces ir unikālas ar datu avotiem, un tās nevar serializēt vai neserializēt. Lauka vērtības, kas apzīmē unikālās atslēgas, var tikt izmantotas JSON, lai identificētu ierakstus, kurus pēc tam var uzmeklēt. n/a
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON var ietvert masīvus, kurus var pārvērst tabulās. Šīs vērtības var būt ierakstu masīvi vai vērtību masīvi, kas faktiski ir atsevišķu kolonnu tabulas. ParseJSON() masīvus var pārvērst tikai vienas kolonnas dinamisko vērtību tabulā, un tos var izmantot kā tādus vai pārvērst par ierakstītām ierakstu tabulām, izmantojot ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""divi"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Text { "stringField": "this is text" } Teksts ir izteikts JSON tips un to var konvertēt tieši. Text( ParseJSON( "{ ""stringField"": ""tas ir teksts"" }").stringField )
Two options { "available": true }
{ "available": "Yes" }
Divas opcijas tiek rādītas kā lokalizētas virknes, dublētas ar būla vērtību. JSON () funkcija divas opcijas uz Būla vērtību. Nevar veikt tiešu konvertēšanu no Būla vērtības, skaitļa vai virknes uz divām opcijām, bet funkcija Switch() vai If() var izmantot teksta, skaitļa vai Būla vērtībā. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Examples

Piekļuve lauka vērtībām

Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Formula atgriež tekstu text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Formula atgriež skaitli 567:
    Value( ParseJSON( JsonString ).number )
    

Ja lauka nosaukums sastāv no nederīga identifikatora nosaukuma, lauku nosaukumus var ievietot vienpēdiņās. Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "0": { "child-field": "text value" } }
  1. Formula atgriež tekstu text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Blanks

Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Mēģinot piekļūt neesošajiem laukiem, tiek atgriezta vērtība Blank(). Formula atgriež true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null vērtības tiek uzskatītas par Blank(). Formula atgriež true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Simple Arrays

Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "array": [1, 2, 3] }
  1. Piekļūstot otrajam skaitlim masīva lauka vienas kolonnas dinamisko vērtību tabulā un konvertējot par skaitli, izmantojot Value(), tiek atgriezts 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Vienas kolonnas dinamisko vērtību tabulas konvertēšana masīva laukā uz vienas kolonnas skaitļu { Value: 1 }, { Value: 2 }, { Value: 3 }tabulu:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Ierakstu masīvi

Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Konvertēšanu uz ierakstītu ierakstu tabulu tieši ar ForAll() var veikt, lai ThisRecord.[fieldname] piekļūtu dinamiskajiem laukiem un pārvērstu tos noteiktos tipos:

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

No masīva uz tabulu

  1. Pārvēršot dinamiskās vērtības tabulā, izmantojot funkciju Table(), tiek izveidota vienas kolonnas dinamisko vērtību tabula. Pēc tam objektam ir jāpiekļūst, izmantojot Value (vienu) kolonnu, un tas ir jāpārvērš par tipiem kā skaidrots iepriekš.

Ņemot vērā šādu JSON virkni mainīgajā ar nosaukumu JsonString

{ "array": [1, 2, 3] }

Tabula() atgriež vienas kolonnas dinamisko vērtību tabulu ar vienas kolonnas vērtību skaitlim masīvā...

 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() atgriež vienas kolonnas dinamisko vērtību tabulu, kas attēlo katru masīva json objektu.

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