Funzione ParseJSON
Si applica a: App Canvas App basate su modello Power Pages Power Platform CLI
Interpreta una stringa JSON e restituisce un oggetto non tipizzato.
Descrzione
La funzione ParseJSON analizzerà una stringa JSON valida e restituirà un oggetto non tipizzato che rappresenta la struttura JSON.
La funzione ParseJSON può restituire errori se il testo non è JSON valido in base al formato JavaScript Object Notation (JSON) descritto in ECMA-404 e IETF RFC 8259.
Sintassi
AnalizzaJSON( JSONString )
- JSONString – Obbligatorio. La struttura JSON rappresentata come testo.
Conversione del tipo di dati dell'oggetto non tipizzato
ParseJSON restituisce un oggetto non tipizzato che richiede la conversione esplicita dei valori dei campi nei tipi di dati supportati. La tabella seguente elenca i tipi di dati in Power Apps e un tipo di dati JSON corrispondente e come convertirlo.
Tipo di dati | Esempi JSON | Descrizione | Esempio di conversione |
---|---|---|---|
Boolean | { "bool": true } |
Boolean è un tipo esplicito in JSON e può essere convertito direttamente. | booleano(ParseJSON("{ ""bool"": true }").bool ) |
Color | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Non esiste un tipo di colore in JSON. I valori di colore possono essere creati da numeri interi RGBA o stringhe esadecimali. | ColoreValore( ParseJSON( "{ ""colore"": ""#102030"" }" ).colore ) Con( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Valore( uo.r ), Valore( uo.g ), Valore( uo.b ), Valore( uo.a ) ) ) |
Valuta, Numero | { "numbervalue": 123.5 } |
I numeri sono rappresentati direttamente in JSON con un punto (.) come separatore decimale | Valore(ParseJSON("{ ""numerovalore"": 123.5 }").numerovalore ) |
Data, DateTime, Ora | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON non ha un tipo di data oppure ora, quindi può rappresentare solo date e ore come stringhe. Un oggetto non tipizzato può essere convertito direttamente da una stringa in formato ISO 8601 in una data, ora o data/ora. Per altri formati, converti prima il campo JSON in testo usando la funzione Text() e quindi utilizza la funzione DateValue(), TimeValue() o DateTimeValue() che per impostazione predefinita utilizzerà la lingua delle impostazioni dell'utente corrente. | DateValue( ParseJSON("{ ""appuntamento"": ""2022-05-10"" }").appuntamento ) DateValue( Text( ParseJSON("{ ""appointment"": ""5 maggio 2022"" }").appointment ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON non ha un tipo di dati per i GUID, quindi possono essere rappresentati solo come stringhe. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
Collegamento ipertestuale, Immagine, Elementi multimediali | { "URI": "https://northwindtraders.com/logo.jpg" } |
Questi tipi di dati sono tipi di dati di testo e possono essere convertiti in testo e quindi utilizzati in Power Apps. | Testo(ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI ) |
Choice | { "status": 1 } { "status": "Closed" } |
Le scelte sono presentate come stringhe localizzate, supportate da un numero. La funzione JSON() serializza una scelta sul numero supportato. Non esiste una conversione diretta da numero o stringa in una scelta, ma le funzioni Switch() o If() possono essere utilizzate sul testo o sul valore numerico. | Switch( Valore( ParseJSON( "{ ""stato"": 1 }" ).stato ), 0, Stato.Aperto, 1, Stato.Chiuso ) |
Registra | { "field": "value" } |
Non esiste una conversione diretta da un oggetto JSON in una struttura di record, ma i singoli campi possono essere recuperati da un oggetto non tipizzato per formare un record. | { campo: Testo( ParseJSON( "{ ""campo"": ""valore"" }" ).campo ) } |
Riferimento del record | N/D | I riferimenti dei record sono univoci per le origini dati e non possono essere serializzati o deserializzati. I valori dei campi che rappresentano chiavi univoche possono essere utilizzati in JSON per identificare i record che possono quindi essere cercati. | N/D |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON può contenere matrici, che possono essere convertite in tabelle. Questi valori possono essere matrici di record o matrici di valori che sono effettivamente tabelle a colonna singola. Gli array ParseJSON() possono essere convertiti solo in una tabella a colonna singola di oggetti non tipizzati e possono essere utilizzati come tali o convertiti in tabelle tipizzate di record utilizzando ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { " "id"": 2, ""name"": ""due"" } ]" ) ), { id: Valore(ThisRecord.Value.id), nome: Testo(ThisRecord.Value.name) } ) |
Testo | { "stringField": "this is text" } |
Text è un tipo esplicito in JSON e può essere convertito direttamente. | Testo( ParseJSON( "{ ""stringField"": ""questo è testo"" }").stringField ) |
Due opzioni | { "available": true } { "available": "Yes" } |
Le opzioni Due sono presentate come stringhe localizzate, supportate da un booleano. La funzione JSON() serializza le opzioni Due al valore booleano. Non esiste una conversione diretta da booleano, numero o stringa nelle opzioni Due, ma le funzioni Switch() o If() possono essere utilizzate sul testo, sul valore numerico o booleano. | Switch( booleano( ParseJSON( "{ ""disponibile"": true }" ).disponibile ), false, Availability.No, true, Disponibilità.Sì ) |
Esempi
Accesso ai valori dei campi
Data la seguente stringa JSON in una variabile denominata JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- La formula seguente restituisce il testo
text value
:Text( ParseJSON( JsonString ).parent.child )
- La formula seguente restituisce il numero
567
:Value( ParseJSON( JsonString ).number )
Nel caso in cui il nome di un campo sia costituito da un nome identificativo non valido, è possibile inserire i nomi dei campi tra virgolette singole.
Data la seguente stringa JSON in una variabile denominata JsonString
{ "0": { "child-field": "text value" } }
- La formula seguente restituisce il testo
text value
:Text( ParseJSON( JsonString ).'0'.'child-field' )
Valori vuoti
Data la seguente stringa JSON in una variabile denominata JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Il tentativo di accedere a campi inesistenti restituisce Blank(). La formula seguente restituisce
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- I valori JSON
null
vengono considerati Blank(). La formula seguente restituiscetrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Matrici semplici
Data la seguente stringa JSON in una variabile denominata JsonString
{ "array": [1, 2, 3] }
- L'accesso al secondo numero nella tabella a colonna singola del campo della matrice di oggetto non tipizzato e la conversione in un numero utilizzando Value() restituisce
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- La conversione della tabella a colonna singola di oggetto non tipizzato nel campo della matrice, in una tabella di numeri a colonna singola
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Matrici di record
Data la seguente stringa JSON in una variabile denominata JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
La conversione in una tabella tipizzata di record direttamente con ForAll() può essere fatta usando
ThisRecord.[fieldname]
per accedere ai campi oggetto non tipizzato e convertirli in tipi noti:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matrice a Tabella
- La conversione di un oggetto non tipizzato in una tabella utilizzando la funzione Table() restituisce una tabella a colonna singola di oggetti non tipizzati. È quindi necessario accedere all'oggetto utilizzando la colonna
Value
(singola) e convertirlo in tipi come spiegato in precedenza.
Data la seguente stringa JSON in una variabile denominata JsonString
{ "array": [1, 2, 3] }
Table() restituisce una tabella a colonna singola di oggetti non tipizzati con un valore a colonna singola per il numero nell'array...
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() restituisce una tabella a colonna singola di oggetti non tipizzati che rappresenta ciascun oggetto json nell'array.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )