Kopīgot, izmantojot


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.

Svarīgi

  • Otrā argumenta izmantošana, lai ParseJSON pārvērstu par drukātu objektu, ir eksperimentāla funkcija.
  • Eksperimentālie līdzekļi nav paredzēti komerciālai lietošanai, un to funkcionalitāte var būt ierobežota. Šie līdzekļi ir pieejami pirms oficiālā laidiena, lai jūs varētu iegūt agrīnu piekļuvi un sniegt atsauksmes. Papildinformācija: Izpratne par izmēģinājuma, priekšskatījuma un novecojušajiem līdzekļiem pamatnes programmā
  • Šajā rakstā aprakstītā darbība ir pieejama tikai tad, ja lietotāja definēto tipu eksperimentālais līdzeklis iestatījumos > Gaidāmie līdzekļi > Eksperimentālie līdzekļi ir ieslēgts (pēc noklusējuma tas ir izslēgts).
  • Jūsu atsauksmes mums ir ļoti vērtīgas. Lūdzu, dariet mums zināmu, ko jūs domājat eksperimentālo funkciju kopienas forumā Power Apps .

Apraksts

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.

Sintakse

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ž dinamisko vērtību, 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.

Datu tips JSON piemēri Apraksts Sarunas piemērs
Būla { "bool": true } Būla ir izteikts JSON tips un to var konvertēt tieši. Boolean( ParseJSON("{ ""bool"": true }").bool )
Krāsa { "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 ) ) )
Valūta, skaitlis { "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 )
Izvēle { "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 )
Ieraksts { "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 ) }
Ieraksta atsauce Nav datu 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. Nav datu
Entītija [ { "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) } )
Īsziņu { "stringField": "this is text" } Teksts ir izteikts JSON tips un to var konvertēt tieši. Text( ParseJSON( "{ ""stringField"": ""tas ir teksts"" }").stringField )
Divas opcijas { "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 )

Piemēri

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' )
    

Tukšs

Ņ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 ) )
    

Vienkārši masīvi

Ņ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 )