Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for: Lærredsapps
Copilot Studio
Modeldrevne apps
Power Platform CLI
Dataverse-funktioner
Power Pages
Fortolker en JSON-streng og returnerer en dynamisk værdi eller en bestemt indtastet værdi, hvis der er angivet en type.
Vigtige oplysninger
- Brug af det andet argument til at ParseJSON konvertere til et indtastet objekt er en eksperimentel funktion.
- Eksperimentelle funktioner er ikke beregnet til produktion og kan have begrænset funktionalitet. Disse funktioner er tilgængelige før en officiel udgivelse, så du kan få tidlig adgang og give feedback. Flere oplysninger: Forstå eksperimentelle funktioner, funktioner i forhåndsversion og udgåede funktioner i lærredapps
- Den funktionsmåde, der beskrives i denne artikel, er kun tilgængelig, når Brugerdefinerede typers eksperimentelle funktion i Indstillinger > Kommende funktioner > Eksperimentel er slået til (den er deaktiveret som standard).
- Din feedback er meget værdifuldt for os. Fortæl os, hvad du mener, i Power Apps-communityforummet for eksperimentelle funktioner.
Description
Funktionen ParseJSON fortolker en gyldig JSON-streng og returnerer en dynamisk værdi, der repræsenterer JSON-strukturen.
Du kan også bruge det andet argument til at konvertere JSON til et typeobjekt, der kan bruges direkte i Power Fx formler. Dette gør resultatet lettere at forbruge, da konverteringer og tilpasninger på anvendelsesstedet ikke længere er påkrævet. JSON uden type knyttes til typen med disse regler:
- Kolonner af typen, som ikke findes i JSON, udfyldes med tomme værdier.
- Kolonner i JSON, som ikke findes i typen, ignoreres.
- Kolonner, der både findes i typen og JSON, skal JSON-værdien kunne tvinges til typen.
Funktionen ParseJSON kan returnere fejl, hvis teksten ikke er gyldig JSON i henhold til JSON-formatet (JavaScript Object Notation), der er beskrevet i ECMA-404 og IETF RFC 8259.
Syntaks
ParseJSON( JSONString [ , Type ] )
- JSONString – påkrævet. JSON-strukturen repræsenteres som tekst.
- Type - Valgfrit. Typedefinitionen Power Fx til JSON-strukturen. Uden dette argument ParseJSON returnerer en dynamisk værdi. Med det returnerer funktionen en bestemt indtastet værdi.
Konverterer dynamiske værdier
Uden det andet argument returnerer en dynamisk værdi, ParseJSON som kræver eksplicit konvertering af feltværdier i understøttede datatyper. I følgende tabel vises datatyperne i Power Apps og den tilsvarende JSON-datatype, og hvordan den konverteres.
| Datatype | Eksempler på JSON | Description | Eksempel på konvertering |
|---|---|---|---|
| Boolean | { "bool": true } |
Boolean er en eksplicit type i JSON og kan konverteres direkte. | Boolesk( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Der findes ingen farvetype i JSON. Der kan oprettes farveværdier ud fra RGBA-heltal eller hexadecimale strenge. |
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 } |
Tal repræsenteres direkte i JSON med et punktum ( . ) som decimalseparator. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| Date, DateTime, Time | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON har ikke en dato- eller klokkeslætstype, så det kan kun repræsentere datoer og klokkeslæt som strenge. En dynamisk værdi kan konverteres direkte fra en streng i ISO 8601-format til en dato, et klokkeslæt eller et datetime. Til andre formater skal du først konverteres JSON-feltet til tekst ved hjælp af funktionen Text() og derefter bruge funktionen DateValue(), TimeValue() eller DateTimeValue(), der som standard bruger sproget i den aktuelle brugers indstillinger. |
DateValue( ParseJSON("{ ""aftale"": ""2022-05-10"" }").aftale ) DateValue( Text( ParseJSON("{ ""aftale"": ""5. maj 2022"" }").aftale ) ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON har ikke en datatype til GUID'er, så de kan kun repræsenteres som strenge. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| HyperLink, Billede, Medie | { "URI": "https://northwindtraders.com/logo.jpg" } |
Disse datatyper er tekstdatatyper og kan konverteres til tekst og derefter bruges i Power Apps. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Choice | { "status": 1 }{ "status": "Closed" } |
Valgmuligheder vises som oversatte strenge og understøttes af et tal. JSON()-funktionen serialiserer et valg til dets understøttede tal. Der er ingen direkte konvertering fra tal eller en streng til et valg, men funktionerne Switch() eller If() kan bruges på tekst- eller talværdien. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Post | { "field": "value" } |
Der er ingen direkte konvertering fra et JSON-objekt til en poststruktur, men individuelle felter kan hentes fra den dynamiske værdi for at danne en post. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Postreference | i/t | Postreferencer er entydige for datakilder og kan ikke serialiseres eller afserialiseres. Feltværdier, der repræsenterer entydige nøgler, kan bruges i JSON til at identificere poster, der derefter kan slås op. | i/t |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON kan indeholde matrixer, som kan konverteres til tabeller. Disse værdier kan være matrixer med poster eller matrixer med værdier, der i praksis er tabeller med én kolonne. ParseJSON() matrixer kan kun konverteres til en enkelt kolonnetabel med dynamiske værdier og kan bruges som sådan eller konverteres til indtastede tabeller med poster ved hjælp af 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 er en eksplicit type i JSON og kan konverteres direkte. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
| To indstillinger | { "available": true }{ "available": "Yes" } |
To indstillinger vises som oversatte strenge og understøttes af en boolesk værdi. Funktionen JSON() serialiserer de to indstillinger til den booleske værdi. Der er ingen direkte konvertering fra en boolesk værdi, et tal eller en streng til to indstillinger, men funktionerne Switch() eller If() kan bruges på tekst, tal eller den booleske værdi. | Switch( Boolesk( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Eksempler
Adgang til feltværdier
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Følgende formel returnerer teksten
text value:Text( ParseJSON( JsonString ).parent.child ) - Følgende formel returnerer tallet
567:Value( ParseJSON( JsonString ).number )
Hvis et feltnavn består af et ugyldigt id-navn, kan du angive feltnavnene i enkelte anførselstegn.
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "0": { "child-field": "text value" } }
- Følgende formel returnerer teksten
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Blanke værdier
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Når der gøres forsøg på at få adgang til ikke-eksisterende felter, returneres Blank(). Følgende formel returnerer
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - JSON
null-værdier betragtes som Blank(). Følgende formel returnerertrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Simple matrixer
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "array": [1, 2, 3] }
- Adgang til det andet tal i matrixfeltets tabel med en enkelt kolonne med dynamiske værdier og konvertering til et tal ved hjælp af Value() returnerer
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Konvertering af tabellen med en enkelt kolonne med dynamiske værdier i matrixfeltet til en enkelt kolonnetabel med tal
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Matrix af poster
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Konvertering til en indtastet tabel med poster direkte med ForAll() kan udføres ved hjælp
ThisRecord.[fieldname]af for at få adgang til dynamiske felter og konvertere dem til bestemte typer:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matrix til tabel
- Konvertering af dynamiske værdier til en tabel ved hjælp af funktionen Table() resulterer i en tabel med en enkelt kolonne med dynamiske værdier. Der skal herefter oprettes adgang til objektet ved hjælp af
Value-kolonnen (enkelt), og det skal konverteres til typer som forklaret tidligere.
Givet følgende JSON-streng i en variabel med navnet JsonString
{ "array": [1, 2, 3] }
Table() returnerer en tabel med en enkelt kolonne med dynamiske værdier med en værdi med en enkelt kolonne for tal i matrixen...
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() returnerer en tabel med en enkelt kolonne med dynamiske værdier, der repræsenterer hvert json-objekt i matrixen.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )