Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: App
canvas Copilot Studio
App basate su
modelli power platform Funzioni
di Power Platform
PowerVerse
Interpreta una stringa JSON e restituisce un valore Dinamico o un valore tipizzato specifico se viene fornito un tipo.
Importante
- L'utilizzo del secondo argomento per ParseJSON eseguire la conversione in un oggetto tipizzato è una funzionalità sperimentale.
- Le funzionalità sperimentali non sono destinate ad essere utilizzate per la produzione e sono soggette a restrizioni. Queste funzionalità sono disponibili prima di una versione ufficiale in modo che sia possibile ottenere l'accesso iniziale e inviare commenti. Ulteriori informazioni: Comprendere le funzionalità sperimentali, di anteprima e ritirate nelle app canvas
- Il comportamento descritto in questo articolo è disponibile solo quando la funzionalità sperimentale Tipi definiti dall'utente in Impostazioni > Funzionalità in arrivo > Sperimentale è attivata (per impostazione predefinita è disattivata).
- I tuoi commenti sono importanti per noi. Inviare commenti e suggerimenti nel forum della community delle funzionalità sperimentali di Power Apps.
Descrzione
La ParseJSON funzione analizza una stringa JSON valida e restituisce un valore Dinamico che rappresenta la struttura JSON.
Facoltativamente, usa il secondo argomento per convertire il codice JSON in un oggetto tipizzato che può essere utilizzato direttamente nelle formule Power Fx. Ciò rende il risultato più facile da consumare in quanto non sono più necessarie conversioni e coercizioni nel punto di utilizzo. Il codice JSON non tipizzato viene mappato al tipo con queste regole:
- Le colonne del tipo che non sono presenti nel codice JSON vengono compilate con spazi vuoti.
- Le colonne nel codice JSON che non sono presenti nel tipo vengono ignorate.
- Per le colonne che si trovano sia nel tipo che in JSON, il valore JSON deve essere coercibile al tipo.
La ParseJSON funzione può restituire errori se il testo non è valido in base al formato JSON (JavaScript Object Notation) descritto in ECMA-404 e IETF RFC 8259.
Sintassi
ParseJSON( JSONString [ , Type ] )
- JSONString – obbligatorio. La struttura JSON rappresentata come testo.
- Tipo: facoltativo. La definizione del tipo Power Fx per la struttura JSON. Senza questo argomento, ParseJSON restituisce un valore dinamico, con la funzione restituisce un valore tipizzato specifico.
Conversione di valori dinamici
Senza il secondo argomento, ParseJSON restituisce un valore Dinamico che richiede la conversione esplicita dei valori di campo 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 | Descrzione | Esempio di conversione |
|---|---|---|---|
| Boolean | { "bool": true } |
Boolean è un tipo esplicito in JSON e può essere convertito direttamente. | Boolean( 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. |
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.b ), Value( uo.a ) ) |
| Valuta, Numero | { "numbervalue": 123.5 } |
I numeri sono rappresentati direttamente in JSON con un punto (.) come separatore decimale | Value( ParseJSON("{ "numbervalue"": 123.5 }").numbervalue ) |
| 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 valore dinamico può essere convertito direttamente da una stringa in formato ISO 8601 a una data, ora o datetime. 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("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 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. | Text( 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( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Registra | { "field": "value" } |
Non esiste alcuna conversione diretta da un oggetto JSON a una struttura di record, ma è possibile recuperare singoli campi dal valore Dynamic per formare un record. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| 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. ParseJSON() le matrici possono essere convertite solo in una singola tabella di colonne di valori Dinamici e possono essere usate come tali o convertite in tabelle tipite di record usando ForAll().) | ForAll( Table( ParseJSON( "[ { ""id"":1, ""name"": "one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| Testo | { "stringField": "this is text" } |
Text è un tipo esplicito in JSON e può essere convertito direttamente. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").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( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
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
nullvengono 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 valori dinamici e la conversione in un numero tramite Value() restituisce
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Conversione della tabella a colonna singola dei valori dinamici nel campo della matrice in una singola tabella di colonne di numeri
{ 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 eseguita usando
ThisRecord.[fieldname]per accedere ai campi dinamici e convertirli in tipi specifici:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Matrice a Tabella
- La conversione di valori dinamici in una tabella tramite la funzione Table() genera una tabella a colonna singola di valori dinamici . È 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 valori dinamici con valore a colonna singola per il numero nella matrice...
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 valori dinamici che rappresenta ogni oggetto JSON nella matrice.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )