Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Canvas-apps
Copilot Studio
Modelgestuurde apps
Power Platform CLI
Dataverse-functies
Power Pages
Interpreteert een JSON-tekenreeks en retourneert een dynamische waarde of een specifieke getypte waarde als er een type wordt opgegeven.
Belangrijk
- Het tweede argument gebruiken om ParseJSON te converteren naar een getypt object is een experimentele functie.
- Experimentele functies zijn niet bedoeld voor productiegebruik en bieden mogelijk beperkte functionaliteit. Deze functies zijn beschikbaar voor een officiële release zodat u vroeg toegang kunt krijgen en feedback kunt geven. Meer informatie: Experimentele, preview- en buiten gebruik gestelde functies in canvas-apps begrijpen
- Het gedrag dat in dit artikel wordt beschreven, is alleen beschikbaar wanneer de experimentele functie Door gebruiker gedefinieerde typen in Instellingen > Aanstaande functies > Experimenteel is ingeschakeld (deze is standaard uitgeschakeld).
- Uw feedback is zeer waardevol voor ons. Laat via het Power Apps -communityforum voor experimentele functies weten wat u ervan vindt.
Omschrijving
De ParseJSON functie parseert een geldige JSON-tekenreeks en retourneert een dynamische waarde die de JSON-structuur vertegenwoordigt.
Gebruik eventueel het tweede argument om de JSON om te zetten in een getypeerd object dat direct kan worden gebruikt in Power Fx-formules. Hierdoor is het resultaat gemakkelijker te consumeren, omdat er geen conversies en afdwingingen meer nodig zijn op het moment van gebruik. De niet-getypeerde JSON wordt met de volgende regels aan het type toegewezen:
- Kolommen in het type die niet aanwezig zijn in de JSON, worden leeg gelaten.
- Kolommen in de JSON die niet in het type aanwezig zijn, worden genegeerd.
- Kolommen die zowel in het type als in JSON staan, de JSON-waarde moet naar het type kunnen worden omgezet.
De ParseJSON functie 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 [ , Type ] )
- JSONString: vereist. De JSON-structuur weergegeven als tekst.
- Type: optioneel. De Power Fx-typedefinitie voor de JSON-structuur. Zonder dit argument ParseJSON wordt een dynamische waarde geretourneerd. Hiermee retourneert de functie een specifieke getypte waarde.
Dynamische waarden converteren
Zonder het tweede argument ParseJSON wordt een dynamische waarde geretourneerd waarvoor expliciete conversie van veldwaarden in ondersteunde gegevenstypen is vereist. 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. | Booleaanse waarde( 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.b ), Value( uo.a ) ) |
| Valuta, getal | { "numbervalue": 123.5 } |
Getallen worden direct in JSON weergegeven met een punt (.) als decimaalteken. | Value( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue ) |
| Datum, datum/tijd, tijd | { "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 dynamische waarde kan rechtstreeks worden geconverteerd vanuit een tekenreeks in ISO 8601-indeling 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("{ ""afspraak"": """2022-05-10"" }").afspraak ) DateValue( Text( ParseJSON("{ ""appointment"": ""5 mei 2022"" }").afspraak ) ) |
| 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-42665540000"" }").id ) |
| HyperLink, Afbeelding, 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 de dynamische waarde om een record te vormen. | { veld: 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 één kolomtabel met dynamische waarden en kunnen als zodanig worden gebruikt of geconverteerd naar getypte tabellen met records met Behulp van ForAll(). | 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 }
- Retourneert de volgende formule de tekst
text value:Text( ParseJSON( JsonString ).parent.child ) - 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" } }
- 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 }
- 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 ) ) - JSON
null-waarden worden beschouwd als Blank(). De volgende formule retourneerttrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Eenvoudige matrices
Gegeven de volgende JSON-tekenreeks in een variabele met de naam JsonString
{ "array": [1, 2, 3] }
- Als u het tweede getal in de tabel met één kolom van dynamische waarden van het matrixveld opent en converteert naar een getal met behulp van Value() retourneert
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - De tabel met één kolom met dynamische waarden in het matrixveld converteren naar één kolomtabel met getallen
{ Value: 1 }, { Value: 2 }, { Value: 3 }: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"}
] }
Het rechtstreeks converteren naar een getypte tabel met records met ForAll() kan worden uitgevoerd door
ThisRecord.[fieldname]dynamische velden te openen en te converteren naar specifieke typen:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Van matrix naar tabel
- Het converteren van dynamische waarden naar een tabel met behulp van de functie Table() resulteert in een tabel met één kolom met dynamische waarden. Het object moet dan worden benaderd met behulp van (enkele) kolom
Valueen 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 met dynamische waarden met één kolomwaarde 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 met dynamische waarden die elk json-object in de matrix vertegenwoordigen.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )