Teilen über


ParseJSON-Funktion

Gilt für: Canvas-Apps Modellgesteuerte Apps Power Platform CLI

Interpretiert eine JSON-Zeichenfolge und gibt ein nicht typisiertes Objekt zurück.

Description

Die ParseJSON-Funktion analysiert eine gültige JSON-Zeichenfolge und gibt ein nicht typisiertes Objekt zurück, das die JSON-Struktur darstellt.

Die ParseJSON-Funktion gibt möglicherweise Fehler zurück, wenn der Text kein gültiges JSON-Format gemäß dem in ECMA-404 und IETF-RFC 8259 beschriebenen JSON-Format (JavaScript Object Notation) ist.

Syntax

ParseJSON( JSONString )

  • JSONString – Erforderlich. Die als Text dargestellte JSON-Struktur.

Konvertieren des nicht typisierten Objektdatentyps

ParseJSON gibt ein nicht typisiertes Objekt zurück, was eine explizite Konvertierung von Feldwerten in unterstützte Datentypen erfordert. Die folgende Tabelle listet die Datentypen in Power Apps und einen entsprechenden JSON-Datentyp auf und wie man ihn konvertiert.

Datentyp JSON-Beispiele Beschreibung des Dataflows Beispielkonvertierung
Boolesch { "bool": true } Boolean ist ein expliziter Typ in JSON und kann direkt konvertiert werden. Boolean( ParseJSON(„{ “„bool“„: true }“).bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Es gibt keinen Farbtyp in JSON. Farbwerte können aus RGBA-Ganzzahlen oder hexadezimalen Zeichenfolgen erstellt werden. 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 ) ) )
Währung, Zahl { "numbervalue": 123.5 } Zahlen werden in JSON direkt mit einem Punkt ( .) als Dezimaltrennzeichen getrennt. Value( ParseJSON(„{ ""numbervalue"": 123.5 }“).numbervalue )
Datum, DateTime und Uhrzeit { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON hat keinen Datums- oder Uhrzeittyp und kann daher Datums- und Uhrzeitangaben nur als Zeichenfolgen darstellen. Ein nicht typisiertes Objekt kann direkt von einer Zeichenfolge im ISO 8601-Format in ein Datum, eine Uhrzeit oder eine Datumszeit konvertiert werden. Konvertieren Sie für andere Formate zuerst das JSON-Feld mithilfe der Text()-Funktion in Text und verwenden Sie dann die Funktion DateValue(), TimeValue() oder DateTimeValue(), die standardmäßig die Sprache der aktuellen Benutzereinstellungen verwendet. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON hat keinen Datentyp für GUIds, sodass sie nur als Zeichenfolgen dargestellt werden können. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, Bild und Medien { "URI": "https://northwindtraders.com/logo.jpg" } Diese Datentypen sind Textdatentypen und können in Text konvertiert und dann in Power Apps verwendet werden. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Auswahl { "status": 1 }
{ "status": "Closed" }
Auswahlmöglichkeiten werden als lokalisierte Zeichenfolgen dargestellt, die von einer Zahl unterstützt werden. Die JSON()-Funktion serialisiert eine Auswahl zu ihrer unterstützenden Zahl. Es gibt keine direkte Umwandlung von Zahl oder Zeichenfolge in eine Auswahl, aber die Funktionen Switch() oder If() können auf den Text- oder Zahlenwert angewendet werden. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Datensatz { "field": "value" } Es gibt keine direkte Konvertierung von einem JSON-Objekt in eine Datensatzstruktur, aber einzelne Felder können aus dem nicht typisierten Objekt abgerufen werden, um einen Datensatz zu bilden. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Datensatzverweis Nicht zutreffend Datensatzverweise sind für Datenquellen eindeutig und können nicht serialisiert oder deserialisiert werden. Feldwerte, die eindeutige Schlüssel darstellen, könnten in JSON verwendet werden, um Datensätze zu identifizieren, die dann nachgeschlagen werden können. Nicht zutreffend
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON kann Arrays enthalten, die in Tabellen umgewandelt werden können. Diese Werte können Arrays von Datensätzen oder Arrays von Werten sein, die effektiv einspaltige Tabellen sind. ParseJSON()-Arrays können nur in eine einspaltige Tabelle von nicht typisierten Objekten konvertiert werden und können als solche verwendet oder mithilfe von ForAll() in typisierte Tabellen von Datensätzen konvertiert werden. 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 ist ein expliziter Typ in JSON und kann direkt konvertiert werden. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Zwei Optionen { "available": true }
{ "available": "Yes" }
Zwei Optionen werden als lokalisierte Zeichenfolgen dargestellt, die von einem Boolean unterstützt werden. Die JSON()-Funktion serialisiert zwei Optionen zu ihrem booleschen Wert. Es gibt keine direkte Umwandlung von Boolean, Zahl oder Zeichenfolge in zwei Optionen, aber die Funktionen Switch() oder If() können auf den Text-, Zahlen- oder booleschen Wert angewendet werden. Switch( Boolean( ParseJSON( "{ ""vorhanden"": true }" ).vorhanden ), false, Availability.No, true, Availability.Yes )

Beispiele

Zugreifen auf Feldwerte

Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "parent": { "child": "text value" }, "number": 567 }
  1. Die folgende Formel gibt den Text text value zurück:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Die folgende Formel gibt die Zahl 567 zurück:
    Value( ParseJSON( JsonString ).number )
    

Falls ein Feldname aus einem ungültigen Bezeichnernamen besteht, können Sie die Feldnamen in einfache Anführungszeichen setzen. Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "0": { "child-field": "text value" } }
  1. Die folgende Formel gibt den Text text value zurück:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Leerstellen

Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "text": "text value" , "number": 567, "empty": null }
  1. Der Versuch, auf nicht vorhandene Felder zuzugreifen, gibt Blank() zurück. Die folgende Formel gibt true zurück:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON-null-Werte werden betrachtet als Blank(). Die folgende Formel gibt true zurück:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Einfache Arrays

Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "array": [1, 2, 3] }
  1. Der Zugriff auf die zweite Zahl in der einspaltigen Tabelle des nicht typisierten Objekts des Array-Felds und die Umwandlung in eine Zahl mit Value() gibt 2 zurück:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Das Konvertieren der einspaltigen Tabelle des nicht typisierten Objekts im Array-Feld in eine einspaltige Zahlentabelle { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Arrays von Datensätzen

Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Konvertieren in eine typisierte Tabelle von Datensätzen direkt mit ForAll() kann durch die Verwendung von ThisRecord.[fieldname] erfolgen, um auf die Felder untypisiertes Objekt zuzugreifen und sie in bekannte Typen zu konvertieren:

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

Array für Tabelle

  1. Konvertieren von nicht typisiertem Objekt zu einer Tabelle, indem Sie die Ergebnisse der Tabelle() in eine einspaltige Tabelle von nicht typisierten Objekten verwenden. Auf das Objekt muss dann mit der Spalte Value (einzelne) Spalte zugegriffen und wie zuvor erläutert in Typen konvertiert werden.

Die folgende JSON-Zeichenfolge in einer Variablen mit dem Namen JsonString vorausgesetzt

{ "array": [1, 2, 3] }

Tabelle() gibt eine einspaltige Tabelle von nicht typisierten Objekten mit einem einspaltigen Wert für Zahl im Array zurück...

 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"}
 ] }

Tabelle() gibt eine einspaltige Tabelle von nicht typisierten Objekten zurück, die jedes json-Objekt im Array darstellt.

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