Del via


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 }
  1. Følgende formel returnerer teksten text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 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" } }
  1. 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 }
  1. Hvis du prøver å få tilgang til felt som ikke finnes, returneres Blank(). Følgende formel returnerer true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null-verdier regnes som Blank(). Følgende formel returnerer true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Enkle matriser

Gitt følgende JSON-streng i en variabel med navnet JsonString

{ "array": [1, 2, 3] }
  1. 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 ) )
    
  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"}
    ] }
  1. 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

  1. 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 )