De functie ParseJSON

Van toepassing op: Canvas-apps Modelgestuurde apps Power Platform CLI

Interpreteert een JSON-tekenreeks en retourneert een niet-getypeerd object.

Omschrijving

De functie ParseJSON parseert een geldige JSON-tekenreeks en retourneert een niet-getypeerd object dat de JSON-structuur vertegenwoordigt.

De functie ParseJSON kan fouten retourneren als de tekst geen geldige JSON is volgens de JSON-indeling (JavaScript Object Notation) die wordt beschreven in ECMA-404 en IETF-RFC 8259.

Syntaxis

ParseJSON( JSONString )

  • JSONString: vereist. De JSON-structuur weergegeven als tekst.

Niet-getypeerd objectgegevenstype converteren

ParseJSON retourneert een niet-getypeerd object waarvoor expliciete conversie van veldwaarden in ondersteunde gegevenstypen vereist is. De volgende tabel bevat de gegevenstypen in Power Apps en een bijbehorend JSON-gegevenstype en een beschrijving van de manier waarop u deze converteert.

Gegevenstype JSON-voorbeelden Omschrijving Voorbeeldconversie
Booleaans { "bool": true } Boolean is een expliciet type in JSON en kan direct worden geconverteerd. Boolean( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Er is geen kleurtype in JSON. Kleurwaarden kunnen worden gemaakt op basis van RGBA-getallen of hexadecimale tekenreeksen. 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 ) ) )
Currency, Number { "numbervalue": 123.5 } Getallen worden direct in JSON weergegeven met een punt (.) als decimaalteken. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Date, DateTime, Time { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON heeft geen datum- of tijdtype, dus kan datums en tijden alleen als tekenreeksen weergeven. Een niet-getypeerd object kan direct worden geconverteerd van een string in ISO 8601-notatie naar een datum, tijd of datum/tijd. Voor andere notaties moet het JSON-veld eerst naar tekst worden geconverteerd met de functie Text() en vervolgens worden doorgegeven aan de functie DateValue(), TimeValue() of DateTimeValue() die standaard de taal van de huidige gebruikersinstellingen gebruikt. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON heeft geen gegevenstype voor GUID's, dus deze kunnen alleen worden weergegeven als tekenreeksen. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, Image, Media { "URI": "https://northwindtraders.com/logo.jpg" } Deze gegevenstypen zijn tekstgegevenstypen en kunnen worden geconverteerd naar tekst en vervolgens worden gebruikt in Power Apps. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Keuze { "status": 1 }
{ "status": "Closed" }
Keuzes worden weergegeven als gelokaliseerde tekenreeksen, ondersteund door een getal. De JSON()-functie serialiseert een keuze naar het ondersteunende getal. Er is geen directe conversie van een getal of tekenreeks naar een keuze, maar de functies Switch() en If() kunnen worden gebruikt voor de tekst- of getalwaarde. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Opnemen { "field": "value" } Er is geen directe conversie van een JSON-object naar een recordstructuur, maar afzonderlijke velden kunnen worden opgehaald uit het niet-getypeerde object om een record te vormen. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Recordverwijzing n.v.t. Recordverwijzingen zijn uniek voor gegevensbronnen en kunnen niet worden geserialiseerd of gedeserialiseerd. Veldwaarden die voor unieke sleutels staan, kunnen in JSON worden gebruikt om records te identificeren die vervolgens kunnen worden opgezocht. n.v.t.
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON kan matrices bevatten die kunnen worden geconverteerd naar tabellen. Deze waarden kunnen matrices van records zijn of matrices van waarden die in feite tabellen met één kolom zijn. ParseJSON()-matrices kunnen alleen worden geconverteerd naar een tabel met één kolom van niet-getypeerde objecten en als zodanig worden gebruikt of met ForAll() worden geconverteerd naar getypeerde tabellen met records. ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Sms verzenden { "stringField": "this is text" } Text is een expliciet type in JSON en kan direct worden geconverteerd. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Twee opties { "available": true }
{ "available": "Yes" }
Twee opties worden weergegeven als gelokaliseerde tekenreeksen, ondersteund door een booleaanse waarde. De JSON()-functie serialiseert een 'twee opties' naar de booleaanse waarde. Er is geen directe conversie van een booleaanse waarde, getal of tekenreeks naar twee opties, maar de functies Switch() en If() kunnen worden gebruikt voor de tekst-, getal- of booleaanse waarde. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Voorbeelden

Veldwaarden openen

Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Retourneert de volgende formule de tekst text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Retourneert de volgende formule het getal 567:
    Value( ParseJSON( JsonString ).number )
    

Als een veldnaam uit een ongeldige identificatienaam bestaat, kunt u de veldnamen tussen enkele aanhalingstekens plaatsen. Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

{ "0": { "child-field": "text value" } }
  1. Retourneert de volgende formule de tekst text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Lege waarden

Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Bij een poging om toegang te krijgen tot niet-bestaande velden, wordt Blank() geretourneerd. De volgende formule retourneert true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null-waarden worden beschouwd als Blank(). De volgende formule retourneert true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Eenvoudige matrices

Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

{ "array": [1, 2, 3] }
  1. Wanneer u het tweede getal in de tabel met één kolom van het matrixveld van niet-getypeerde objecten opent en converteert naar een getal met Value(), wordt 2 geretourneerd:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. De tabel met één kolom van niet-getypeerde objecten in het matrixveld naar een tabel van één kolom met getallen { Value: 1 }, { Value: 2 }, { Value: 3 } converteren:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Recordmatrices

Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Rechtstreeks converteren naar een getypeerde tabel met records met ForAll() kan worden gedaan door gebruik te maken van ThisRecord.[fieldname] om toegang te krijgen tot velden voor niet-getypeerde objecten en deze te converteren naar bekende typen:

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

Van matrix naar tabel

  1. Conversie van een niet-getypeerd object naar een tabel met behulp van de functie Table() resulteert in een tabel met één kolom van niet-getypeerde objecten. Het object moet dan worden benaderd met behulp van (enkele) kolom Value en worden geconverteerd naar typen zoals eerder uitgelegd.

Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString

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

Table() retourneert een tabel met één kolom van niet-getypeerde objecten met een enkele kolom Waarde voor getal in de matrix...

 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() retourneert een tabel met één kolom van niet-getypeerde objecten die elk json-object in de matrix vertegenwoordigt.

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