ParseJSON-funksjon
Gjelder: Lerretsapper Modelldrevne apper 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 – Obligatorisk. 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. | Boolean( 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 ) 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, tall | { "numbervalue": 123.5 } |
Tall representeres direkte i JSON med et punktum ( . ) som desimaltegn. | Value( 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("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
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. | Text( 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. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
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. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
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 én enkelt kolonnetabell med objekter uten type og kan brukes som dette eller konverteres til skrevne tabeller med oppføringer ved hjelp av ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { 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"": ""this is text"" }").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( Boolean( 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 enkeltkolonnetabell med objekter uten type med en enkeltkolonneverdi 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 enkeltkolonnetabell med objekter uten type som representerer hvert JSON-objekt i matrisen.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )