ParseJSON-funksjon
Gjelder for: Lerretsapper Modelldrevne apper Power Pages Power Platform CLI
Tolker en JSON-streng og returnerer et objekt uten type.
Description
ParseJSON-funksjonen analyserer en gyldig JSON-streng og returnerer et objekt uten type som representerer JSON-strukturen.
ParseJSON-funksjonen kan returnere feil hvis teksten ikke er gyldig JSON i henhold til JSON-formatet (JavaScript Object Notation) som er beskrevet i ECMA-404 og IETF RFC 8259.
Syntaks
ParseJSON( JSONString )
- JSONString – Påkrevd. JSON-strukturen representert som tekst.
Konvertere objektdatatype uten type
ParseJSON returnerer et objekt uten type som krever eksplisitt konvertering av feltverdier i støttede datatyper. Tabellen nedenfor viser datatypene i Power Apps og en tilsvarende JSON-datatype og hvordan du konverterer den.
Datatype | JSON-eksempler | Bekrivelse | Eksempelkonvertering |
---|---|---|---|
Boolean | { "bool": true } |
Boolsk er en eksplisitt type i JSON og kan konverteres direkte. | Boolsk( ParseJSON("{ ""bool"": true }").bool ) |
Color | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Det finnes ingen fargetype i JSON. Fargeverdier kan opprettes fra RGBA-heltall eller heksadesimale strenger. | ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) Med( { uo: ParseJSON( "{ ""r""": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }") }, RGBA( Verdi( uo.r), Verdi( uo.g), Verdi( uo.b), Verdi( uo.a) ) ) ) |
Valuta, tall | { "numbervalue": 123.5 } |
Tall representeres direkte i JSON med et punktum ( . ) som desimaltegn. | Verdi( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue) |
Dato, DateTime, Klokkeslett | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON har ikke en dato- eller klokkesletttype, og kan derfor bare representere datoer og klokkeslett som strenger. Et objekt uten type kan konverteres direkte fra en streng i ISO 8601-format til en dato, et klokkeslett eller et dato/klokkeslett. For andre formater må du først konvertere JSON-feltet til tekst ved hjelp av Text()-funksjonen og deretter bruke DateValue(), TimeValue() or DateTimeValue()-funksjonen som vil bruke språket til gjendende brukers innstillinger som standard. | DateValue( ParseJSON("{ """avtale"": ""2022-05-10""" }).avtale ) DateValue( Text( ParseJSON("{ """avtale"": ""5. mai 2022"" }").avtale) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON har ikke datatypen GUIds, så de kan bare representeres som strenger. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
Hyperkobling, Bilde, Media | { "URI": "https://northwindtraders.com/logo.jpg" } |
Disse datatypene er tekstdatatyper som kan konverteres til tekst og deretter brukes i Power Apps. | Tekst( ParseJSON("{ """URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
Valg | { "status": 1 } { "status": "Closed" } |
Valgmuligheter presenteres som lokaliserte strenger støttet av et tall. JSON()-funksjonen serialiserer et valg med bakgrunnstallet. Det er ingen direkte konvertering fra tall eller streng til valgmulighet, men Switch() eller If()-funksjonene kan brukes på tekst- eller tallverdien. | Bryter( Verdi( ParseJSON( "{ """status"": 1 }" ).status ), 0, Status.Åpen, 1, Status.Stengt ) |
Spill inn | { "field": "value" } |
Ingen direkte konvertering fra et JSON-objekt til en oppføringsstruktur, men enkeltfelt kan hentes fra objekt uten type for å opprette en oppføring. | { felt: Tekst( ParseJSON( "{ ""felt"": ""verdi"" }" ).felt ) } |
Oppføringsreferanse | i/t | Oppføringsreferanser er unike for datakilder og kan ikke serialiseres eller avserialiseres. Feltverdier som representerer unike nøkler, kan brukes i JSON til å identifisere oppføringer som deretter kan søkes opp. | i/t |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON kan inneholde matriser, som kan konverteres til tabeller. Disse verdiene kan være matriser med oppføringer, eller matriser med verdier som er tabeller med én kolonne. ParseJSON() matriser kan bare konverteres til en enkelt kolonnetabell med utypede objekter, og kan brukes som sådan eller konverteres til typede tabeller med poster ved hjelp av ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one" }", { ""id"": 2, ""name"": ""to"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
Tekstmelding | { "stringField": "this is text" } |
Text er en eksplisitt type i JSON og kan konverteres direkte. | Text( ParseJSON( "{ ""stringField"": ""dette er tekst"" }").stringField ) |
To alternativer | { "available": true } { "available": "Yes" } |
To valgmuligheter presenteres som lokaliserte strenger, støttet av en boolsk. JSON()-funksjonen serialiserer to alternativer i boolsk verdi. Det er ingen direkte konvertering fra boolske, tall eller streng til to valgmuligheter, men Switch() eller If()-funksjonene kan brukes på tekst-, nummer- eller boolsk-verdien. | Switch( boolsk( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, availability.Yes ) |
Eksempler
Tilgang til feltverdier
Gitt 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 av et ugyldig identifikatornavn, kan du legge feltnavnene i enkle anførselstegn.
Gitt 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' )
Mellomrom
Gitt følgende JSON-streng i en variabel med navnet JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Hvis du prøver å få tilgang til felt som ikke finnes, returneres Blank(). Følgende formel returnerer
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- JSON
null
-verdier regnes som Blank(). Følgende formel returnerertrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Enkle matriser
Gitt følgende JSON-streng i en variabel med navnet JsonString
{ "array": [1, 2, 3] }
- Tilgang til det andre tallet i matrisefeltets tabell med enkeltkolonner for objekt uten type og konvertering til et tall ved hjelp av Value() returnerer
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Konvertering av tabellen med enkeltkolonner for objekt uten type i matrisefeltet til en enkelt kolonnetabell med tall
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Oppføringsmatriser
Gitt følgende JSON-streng i en variabel med navnet JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Du kan foreta konvertering til en oppføringstabell med type direkte med ForAll() ved å bruke
ThisRecord.[fieldname]
til å få tilgang til felter for objekt uten type og konvertere dem til kjente typer:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matrise til tabell
- Hvis du konverterer objekt uten type til en tabell ved å bruke Table()-funksjonen, blir resultatet en enkeltkolonnetabell med objekter uten type. Du må deretter gå til objektet ved å bruke
Value
-kolonnen (enkeltkolonne) og konvertere det til typer som forklart ovenfor.
Gitt følgende JSON-streng i en variabel med navnet JsonString
{ "array": [1, 2, 3] }
Table() returnerer en tabell med én kolonne med uskrevne objekter med en enkeltkolonne Verdi for tall 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() returnerer en tabell med én kolonne med uskrevne objekter som representerer hvert json-objekt i matrisen.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )