Share via


Funktionen ParseJSON

Gælder for: Lærred-apps Modeldrevne apps Power Platform CLI

Fortolker en JSON-streng og returnerer et objekt uden type.

Description

Funktionen ParseJSON fortolker en gyldig JSON-streng og returnerer et objekt uden type, der repræsenterer JSON-strukturen.

Funktionen ParseJSON returnerer måske fejl, hvis teksten ikke er gyldig i JSON-format i henhold til JSON-formatet (JavaScript Object Notation), der er beskrevet i ECMA-404 og IETF RFC 8259.

Syntaks

ParseJSON( JSONString )

  • JSONString – påkrævet. JSON-strukturen repræsenteres som tekst.

Konvertering af objektdatatype uden type

ParseJSON returnerer et objekt uden type, 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 Beskrivelse Eksempel på konvertering
Boolean { "bool": true } Boolean er en eksplicit type i JSON og kan konverteres direkte. Boolean( 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 ) ) )
Currency, Number { "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. Et objekt uden type kan konverteres direkte fra en streng i ISO 8601-format til en dato, et klokkeslæt eller en 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("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
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, Image, Media { "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 sker ingen direkte konvertering fra et JSON-objekt til en poststruktur, men der kan hentes individuelle felter fra objektet uden type for at oprette en ny 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 tabel med enkelt kolonne af objekter uden type og kan bruges som sådan eller konverteres til tabeltyper 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( Boolean( 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 }
  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 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" } }
  1. 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 }
  1. 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 ) )
    
  2. JSON null-værdier betragtes som Blank(). Følgende formel returnerer true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Simple matrixer

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

{ "array": [1, 2, 3] }
  1. Ved adgang til det andet tal i matrixfeltets tabel med en enkelt kolonne af objekt uden type og konvertering til et tal ved hjælp af Value() returnerer 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Konvertering af tabellen med en enkelt kolonne af objekter uden type i matrixfeltet til en tabel med enkelt kolonne over tallene { 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"}
    ] }
  1. Du kan konvertere direkte til en typetabel med poster med ForAll() ved at bruge ThisRecord.[fieldname] til at få adgang til objekt uden type-felter og konvertere dem til kendte typer:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Matrix til tabel

  1. Hvis du konverterer objekt uden type til en tabel ved hjælp af funktionen Table(), oprettes der en tabel med objekter uden type i én kolonne. 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 af objekter uden type med en enkelt kolonneværdi 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 af objekter uden type, der repræsenterer de enkelte json-objekter i matrixen.

  Set(untypedTable, Table( ParseJSON( JsonString ).array );
  
  Text( Index(untypedTable, 1).Value.name )