Bendrinti naudojant


ParseJSON (funkcija ParseJSON)

Taikoma: Drobės programoms Modeliu pagrįstoms programoms Power Platform CLI

Interpretuoja JSON eilutę ir pateikia neapibrėžto tipo objektą.

Aprašą

Funkcija ParseJSON išanalizuos tinkamos JSON eilutės sintaksę ir pateiks neapibrėžto tipo objektą, nurodantį JSON struktūrą.

ParseJSON funkcija gali pateikti klaidas, jei tekstas negalioja JSON pagal JavaScript objekto žymėjimo (JSON) formatą, aprašytą ECMA-404 ir IETF RFC 8259.

Sintaksė

ParseJSON( JSONString )

  • JSONString – būtina. JSON struktūra nurodoma kaip tekstas.

Neapibrėžto tipo objekto duomenų tipo konvertavimas

ParseJSON pateikia neapibrėžto tipo objektą, kuriam reikalingas aiškus laukų reikšmių konvertavimas į palaikomus duomenų tipus. Šioje lentelėje išvardyti duomenų tipai „Power Apps“, atitinkamas JSON duomenų tipas ir kaip juos konvertuoti.

Duomenų tipas JSON pavyzdžiai Aprašą Konvertavimo pavyzdys
Bulio logikos { "bool": true } Bulio logikos tipas yra aiškus JSON tipas ir jį galima tiesiogiai konvertuoti. Boolean( ParseJSON("{ ""bool"": true }").bool )
Spalva { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON nėra spalvos tipo. Spalvų reikšmes galima kurti pagal RGBA sveikuosius skaičius arba šešioliktaines eilutes. 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 ) ) )
Valiuta, skaičius { "numbervalue": 123.5 } Skaičiai JSON formatu pateikiami tiesiogiai su tašku ( . ) kaip dešimtainiu skyrikliu. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Data, DateTime, laikas { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON neturi datos arba laiko tipo, todėl datas ir laiką gali nurodyti tik kaip eilutes. Neapibrėžto tipo objektą galima tiesiogiai konvertuoti iš eilutės ISO 8601 formatu į datą, laiką arba datetime. Esant kitiems formatams, pirmiausia konvertuokite JSON lauką į tekstą naudodami funkciją Text(), tada naudokite funkciją DateValue(), TimeValue() arba DateTimeValue(), kuri pagal numatytąsias nuostatas naudos dabartinio vartotojo parametrų kalbą. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON neturi GUId duomenų tipo, todėl juos galima atvaizduoti tik kaip eilutes. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, vaizdas, medija { "URI": "https://northwindtraders.com/logo.jpg" } Šie duomenų tipai yra teksto duomenų tipai, juos galima konvertuoti į tekstą ir tada naudoti „Power Apps“. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Pasirinkimas { "status": 1 }
{ "status": "Closed" }
Pasirinkimai pateikiami kaip lokalizuotos eilutės, pagrįstos skaičiumi. JSON() funkcija nuosekliai išdėsto pasirinkimą pagal pagrindo skaičių. Nėra tiesioginio konvertavimo iš skaičiaus arba eilutės į pasirinkimą, tačiau teksto arba skaičiaus reikšmei galima naudoti funkcijas Switch() arba If(). Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Įrašas { "field": "value" } Nėra tiesioginio konvertavimo iš JSON objekto į įrašo struktūrą, bet atskiri laukai gali būti nuskaityti iš neapibrėžto tipo objekto, kad būtų galima suformuoti įrašą. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Įrašo nuoroda netaikoma Įrašų nuorodos būdingos tik duomenų šaltiniams, jų negalima nuosekliai išdėstyti arba panaikinti išdėstymo. Laukų reikšmės, nurodančios unikalius raktus, gali būti naudojamos JSON formatu siekiant identifikuoti įrašus, kuriuos galima peržvelgti. netaikoma
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON gali sudaryti masyvai, kuriuos galima konvertuoti į lenteles. Šios reikšmės gali būti įrašų masyvai arba reikšmių masyvai, kurie iš esmės yra vieno stulpelio lentelės. ParseJSON() masyvus galima konvertuoti tik į neapibrėžto tipo objektų vieno stulpelio lentelę ir naudoti kaip tokią arba galima konvertuoti į apibrėžto tipo įrašų lenteles naudojant ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Tekstinė žinutė { "stringField": "this is text" } Tekstas yra aiškus JSON tipas ir jį galima tiesiogiai konvertuoti. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Dvi parinktys { "available": true }
{ "available": "Yes" }
Dvi parinktys pateikiamos kaip lokalizuotos eilutės, pagrįstos Bulio logika. JSON() funkcija nuosekliai išdėsto dvi parinktis kaip jų Bulio logikos reikšmę. Nėra tiesioginio konvertavimo iš Bulio logikos, skaičiaus arba eilutės į dvi parinktis, tačiau teksto, skaičiaus arba Bulio logikos reikšmei galima naudoti funkcijas Switch() arba If(). Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Pavyzdžiai

Prieiga prie laukų reikšmių

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Ši formulė pateikia tekstą text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Ši formulė pateikia skaičių 567:
    Value( ParseJSON( JsonString ).number )
    

Jei lauko pavadinimas yra netinkamas identifikatoriaus pavadinimas, laukų pavadinimus galite pateikti su viengubomis kabutėmis. Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "0": { "child-field": "text value" } }
  1. Ši formulė pateikia tekstą text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Tuščios reikšmės

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Bandant pasiekti nesamus laukus, pateikiama Blank(). Ši formulė pateikia true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null reikšmės laikomos Blank(). Ši formulė pateikia true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Paprasti masyvai

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "array": [1, 2, 3] }
  1. Pasiekus antrąjį skaičių neapibrėžto tipo objekto vieno stulpelio lentelės masyvo lauke ir konvertavus į skaičių naudojant Value(), pateikiama 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Neapibrėžto tipo objekto vieno stulpelio lentelė masyvo lauke konvertuojama į vieno stulpelio skaičių lentelę { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Įrašų masyvai

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Tiesioginis konvertavimas į apibrėžtų tipų įrašų lentelę naudojant ForAll() gali būti atliekamas naudojant ThisRecord.[fieldname] prieigai prie neapibrėžto tipo objekto laukų ir juos konvertuojant į žinomus tipus:

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

Masyvas į lentelę

  1. Konvertavus neapibrėžto tipo objektą į lentelę naudojant funkciją Table(), gaunama neapibrėžto tipo objektų vieno stulpelio lentelė. Tada objektą reikia pasiekti naudojant Value (vieną) stulpelį ir jį galima konvertuoti į tipus, kaip buvo paaiškinta anksčiau.

Kintamajame pateikiama ši JSON eilutė pavadinimu JsonString

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

Table() pateikia neapibrėžto tipo objektų vieno stulpelio lentelę su vieno stulpelio reikšme skaičiui masyve...

 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() pateikia neapibrėžto tipo objektų vieno stulpelio lentelę, kurioje pateikiamas kiekvienas masyve esantis JSON objektas.

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