Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Arbetsyteappar
Copilot Studio
Modelldrivna appar
Power Platform CLI
Dataverse-funktioner
Power Pages
Tolkar en JSON-sträng och returnerar ett dynamiskt värde eller ett specifikt typat värde om en typ anges.
Viktigt
- Att använda det andra argumentet för att ParseJSON konvertera till ett skrivet objekt är en experimentell funktion.
- Experimentella funktioner är inte avsedda för produktionsanvändning och kan ha begränsad funktionalitet. Funktionerna är tillgängliga före den officiella publiceringen så att du kan få tidig tillgång och ge feedback. Mer information: Förstå experimentella, förhandsgransknings- och pensionerade funktioner i arbetsyteappen
- Beteendet som beskrivs i den här artikeln är endast tillgängligt när den experimentella funktionen Användardefinierade typer i Inställningar > Kommande funktioner > Experimentell är aktiverad (den är inaktiverad som standard).
- Din feedback är mycket viktig för oss. Dela med dig av dina åsikter i Power Apps experimentella funktioner communityforum.
Description
Funktionen ParseJSON parsar en giltig JSON-sträng och returnerar ett dynamiskt värde som representerar JSON-strukturen.
Du kan också använda det andra argumentet för att konvertera JSON till ett typifierat objekt som kan användas direkt i Power Fx-formler. Detta gör resultatet lättare att konsumera eftersom konverteringar och tvång vid användningsstället inte längre krävs. Den typlösa JSON-filen mappas till typen med följande regler:
- Kolumner av typen som inte finns i JSON fylls i med tom.
- Kolumner i JSON som inte finns i typen ignoreras.
- För kolumner som finns både i typen och i JSON, måste JSON-värdet kunna tvingas till typen.
Funktionen ParseJSON kan returnera fel om texten inte är giltig JSON enligt JSON-formatet (JavaScript Object Notation) som beskrivs i ECMA-404 och IETF RFC 8259.
Syntax
ParseJSON( JSONString [ , Type ] )
- JSONString – obligatoriskt. JSON-strukturen som representeras som text.
- Typ – valfritt. Definitionen för Power Fx-typ av JSON-strukturen. Utan det här argumentet ParseJSON returnerar ett dynamiskt värde. Med det returnerar funktionen ett specifikt typat värde.
Konvertera dynamiska värden
Utan det andra argumentet ParseJSON returnerar ett dynamiskt värde som kräver explicit konvertering av fältvärden i datatyper som stöds. I följande tabell visas datatyper i Power Apps och en motsvarande JSON-datatyp och hur du konverterar den.
| Datatyp | JSON-exempel | Description | Exempelkonversation |
|---|---|---|---|
| Booleskt | { "bool": true } |
Boolesk är en explicit typ i JSON och kan konverteras direkt. | Booleskt( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Det finns ingen färgtyp i JSON. Färgvärden kan skapas från RGBA-heltal eller hexadecimala strängar. |
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 ) ) |
| Valuta, tal | { "numbervalue": 123.5 } |
al representeras direkt i JSON med en punkt ( . ) som decimaltecken. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| Datum, DateTime, Tid | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON har ingen datum- eller tidstyp och kan därför endast representera datum och tid som strängar. Ett dynamiskt värde kan konverteras direkt från en sträng i ISO 8601-format till ett datum, tid eller datetime. För andra format konverterar du först JSON-fältet till text med funktionen Text() och använder sedan funktionen DateValue(), TimeValue() eller DateTimeValue() som standard använder språket i den aktuella användarens inställningar. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON har ingen datatyp för GUID-värden så de kan bara representeras som strängar. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| HyperLink, bild, Media | { "URI": "https://northwindtraders.com/logo.jpg" } |
Dessa datatyper är textdatatyper och kan konverteras till text och sedan användas i Power Apps. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Alternativ | { "status": 1 }{ "status": "Closed" } |
Val presenteras som lokaliserade strängar och visas med en siffra. Funktionen JSON() serialiserar ett val av uppbackningsnummer. Det finns ingen direkt konvertering från tal eller sträng till ett val, men funktionerna Switch() eller If() kan användas på texten eller talvärdet. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Post | { "field": "value" } |
Det finns ingen direkt konvertering från ett JSON-objekt till en poststruktur, men enskilda fält kan hämtas från det dynamiska värdet för att bilda en post. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Referens för post | saknas | Postreferenser är unika för datakällor och kan inte serialiseras eller inte. Fältvärden som representerar unika nycklar kan användas i JSON för att identifiera poster som sedan kan identifieras. | saknas |
| Register | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON kan innehålla matriser som kan konverteras till tabeller. Dessa värden kan vara matriser med poster eller matriser med värden som i praktiken är tabeller med en kolumn. ParseJSON() matriser kan bara konverteras till en tabell med dynamiska värden i en enda kolumn och kan användas som sådana eller konverteras till inskrivna tabeller med poster med ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| Text | { "stringField": "this is text" } |
Text är en explicit typ i JSON och kan konverteras direkt. | Text( ParseJSON( "{ ""stringField": ""this is text"" }").stringField ) |
| Två alternativ | { "available": true }{ "available": "Yes" } |
Två val presenteras som lokaliserade strängar och visas med en boolesk. Med JSON()-funktionen serialiseras två alternativ till det booleska värdet. Det finns ingen direkt konvertering från boolesk, tal eller sträng till två val, men funktionerna Switch() eller If() kan användas på texten, talet eller booleska värdet. | Switch( Boolean( ParseJSON( "{ """available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Exempel
Åtkomst till fältvärden
Följande JSON-sträng i en variabel med namnet JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Följande formel returnerar texten
text value:Text( ParseJSON( JsonString ).parent.child ) - Följande formel returnerar talet
567:Value( ParseJSON( JsonString ).number )
Om ett fältnamn består av ett ogiltigt ID-namn kan du placera fältnamnen i enkla citattecken.
Följande JSON-sträng i en variabel med namnet JsonString
{ "0": { "child-field": "text value" } }
- Följande formel returnerar texten
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Tomma värden
Följande JSON-sträng i en variabel med namnet JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Om du försöker komma åt icke-befintliga fält returneras Blank(). Följande formel returnerar
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - JSON
null-värden behandlas som Blank(). Följande formel returnerartrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Enkla matriser
Följande JSON-sträng i en variabel med namnet JsonString
{ "array": [1, 2, 3] }
- När du kommer åt det andra talet i matrisfältets tabell med en kolumn med dynamiska värden och konverterar till ett tal med Value() returneras
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Konvertera tabellen med en kolumn med dynamiska värden i matrisfältet till en enskild kolumntabell med tal
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Matriser av poster
Följande JSON-sträng i en variabel med namnet JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Du kan konvertera till en typtabell med poster direkt med ForAll() genom att använda
ThisRecord.[fieldname]för att komma åt dynamiska fält och konvertera dem till specifika typer:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matris till tabell
- Om du konverterar dynamiska värden till en tabell med hjälp av funktionen Table() resulterar det i en tabell med en kolumn med dynamiska värden. Objektet måste sedan nås med hjälp av (enskild)
Valuekolumn och konverteras till typer som förklaras tidigare.
Följande JSON-sträng i en variabel med namnet JsonString
{ "array": [1, 2, 3] }
Table() returnerar en tabell med en kolumn med dynamiska värden med ett värde med en kolumn för tal i matrisen...
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() returnerar en tabell med en kolumn med dynamiska värden som representerar varje json-objekt i matrisen.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )