Dela via


Funktionen ParseJSON

Gäller för: Arbetsyteappar Modellbaserade appar Power Pages Power Platform CLI

Tolkar en JSON-sträng och returnerar ett objekt utan angiven typ.

Beskrivning

ParseJSON-funktionen parsar en giltig JSON-sträng och returnerar ett objekt utan angiven typ som representerar JSON-strukturen.

ParseJSON-funktionen kan returnera fel om texten inte är giltig JSON enligt JSON-format (JavaScript Object Notation) som beskrivs ECMA-404 och IETF RFC 8259.

Syntax

ParseJSON( JSONString )

  • JSONString – Obligatoriskt. JSON-strukturen som representeras som text.

Konvertera objektdatatyp som inte har angetts

ParseJSON returnerar ett objekt utan angiven typ som kräver explicit konvertering av fältvärden i datatyper som stöds. I följande tabell visas datatyper i Power Apps och en motsvarande JSON-datatyp och hur du konverterar den.

Datatyp JSON-exempel Beskrivning Exempelkonversation
Booleskt { "bool": true } Boolesk är en explicit typ i JSON och kan konverteras direkt. boolesk( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Det finns ingen färgtyp i JSON. Färgvärden kan skapas från RGBA-heltal eller hexadecimala strängar. ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color )
Med ( { 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, tal { "numbervalue": 123.5 } al representeras direkt i JSON med en punkt ( . ) som decimaltecken. Värde( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Datum, DateTime, Tid { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON har ingen datum- eller tidstyp och kan därför endast representera datum och tid som strängar. Ett objekt utan typ kan konverteras direkt från en sträng i ISO 8601-format till datum, tid eller datetime. För andra format konverterar du först JSON-fältet till text med funktionen Text() och använder sedan funktionen DateValue(), TimeValue() eller DateTimeValue() som standard använder språket i den aktuella användarens inställningar. DateValue( ParseJSON("{ ""utnämning"": ""2022-05-10"" }").utnämning )
DateValue( Text( ParseJSON("{ ""utnämning"": ""5 maj 2022"" }").utnämning ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON har ingen datatyp för GUID-värden så de kan bara representeras som strängar. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, bild, Media { "URI": "https://northwindtraders.com/logo.jpg" } Dessa datatyper är textdatatyper och kan konverteras till text och sedan användas i Power Apps. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI )
Alternativ { "status": 1 }
{ "status": "Closed" }
Val presenteras som lokaliserade strängar och visas med en siffra. Funktionen JSON() serialiserar ett val av uppbackningsnummer. Det finns ingen direkt konvertering från tal eller sträng till ett val, men funktionerna Switch() eller If() kan användas på texten eller talvärdet. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Post { "field": "value" } Det finns ingen direkt konvertering från ett JSON-objekt till en poststruktur, men enskilda fält kan hämtas från objekt utan angiven typ för att bilda en post. { fält: Text( ParseJSON( "{ ""fält"": ""värde"" }" ).fält ) }
Referens för post saknas Postreferenser är unika för datakällor och kan inte serialiseras eller inte. Fältvärden som representerar unika nycklar kan användas i JSON för att identifiera poster som sedan kan identifieras. saknas
Register [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON kan innehålla matriser som kan konverteras till tabeller. Dessa värden kan vara matriser med poster eller matriser med värden som i praktiken är tabeller med en kolumn. ParseJSON() arrayer kan bara konverteras till en tabell med en kolumn med typlösa objekt och kan användas som sådana eller konverteras till typifierade tabeller med poster med hjälp av 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 är en explicit typ i JSON och kan konverteras direkt. Text( ParseJSON( "{ ""stringField"": ""detta är text"" }").stringField )
Två alternativ { "available": true }
{ "available": "Yes" }
Två val presenteras som lokaliserade strängar och visas med en boolesk. Med JSON()-funktionen serialiseras två alternativ till det booleska värdet. Det finns ingen direkt konvertering från boolesk, tal eller sträng till två val, men funktionerna Switch() eller If() kan användas på texten, talet eller booleska värdet. Switch( boolesk( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Exempel

Åtkomst till fältvärden

Följande JSON-sträng i en variabel med namnet JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Följande formel returnerar texten text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Följande formel returnerar talet 567:
    Value( ParseJSON( JsonString ).number )
    

Om ett fältnamn består av ett ogiltigt ID-namn kan du placera fältnamnen i enkla citattecken. Följande JSON-sträng i en variabel med namnet JsonString

{ "0": { "child-field": "text value" } }
  1. Följande formel returnerar texten text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Tomma värden

Följande JSON-sträng i en variabel med namnet JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Om du försöker komma åt icke-befintliga fält returneras Blank(). Följande formel returnerar true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null-värden behandlas som Blank(). Följande formel returnerar true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Enkla matriser

Följande JSON-sträng i en variabel med namnet JsonString

{ "array": [1, 2, 3] }
  1. Åtkomst till den andra numret i matrisfältets tabell med en kolumn med objekt utan angiven typ och konvertera till en siffra med hjälp av Value() returnerar 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Konvertera tabellen med en kolumn för objekt utan angiven typ i matrisfältet till en tabell med siffror i en kolumn { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Matriser av poster

Följande JSON-sträng i en variabel med namnet JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Konvertera till en maskinskriven tabell med poster direkt med ForAll() kan göras med ThisRecord.[fieldname] för att komma åt fälten objekt utan angiven typ och konvertera dem till kända typer:

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

Matris till tabell

  1. Konvertera objekt utan angiven typ till en tabell med funktionen Table() resulterar i en tabell med en kolumn med objekt utan angiven typ. Objektet måste sedan nås med hjälp av (enskild) Value kolumn och konverteras till typer som förklaras tidigare.

Följande JSON-sträng i en variabel med namnet JsonString

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

Table() returnerar en tabell med en kolumn med objekt utan angiven typ med ett värde med en kolumn för tal 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() returnerar en tabell med en kolumn med typlösa objekt som representerar varje json-objekt i matrisen.

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