# JsonGet Funzione per script e grafici

JsonGet() restituisce il percorso di una stringa dati JSON (JavaScript Object Notation). I dati devono essere dati JSON validi ma possono contenere spazi extra o righe nuove.

Sintassi:

value JsonGet(json, path)

Tipo di dati restituiti: duale

Argomenti

| Argomento | Descrizione |
| --- | --- |
| json | Stringa contenente dati JSON. |
| path | Il percorso deve essere specificato in base a [RFC 6901](https://datatracker.ietf.org/doc/html/rfc6901). Ciò consentirà la ricerca di proprietà all'interno dei dati JSON senza utilizzare funzioni complesse di sottostringa o indice. |

Esempio: espressioni del grafico valide e non valide

| Esempio | Risultato |
| --- | --- |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '' )` | Restituisce `{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a' )` | Restituisce `{"xyz":"XYZ"}` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/a/xyz' )` | Restituisce `"XYZ"` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b' )` | Restituisce `[123,"abc","ABC"]` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/0' )` | Restituisce `123` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/1' )` | Restituisce `abc` |
| `JsonGet( '{"a":{"xyz":"XYZ"},"b":[123,"abc","ABC"]}', '/b/2' )` | Restituisce `ABC` |
| `JsonGet( '{"a":"b"}','/b' )` | Restituisce `null`. Il percorso non punta a una parte valida dei dati JSON. |
| `JsonGet( '{"a"}','/a' )` | Restituisce `null`. I dati JSON non sono valori JSON validi (il membro `"a"` non ha un valore) |

## Esempio: principi fondamentali della funzione JsonGet

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)

#### Espressione del grafico

Panoramica

Si ricevono i dati JSON con i dettagli dell'ordine come una stringa di testo in un'unica riga. Si vuole recuperare le seguenti informazioni:

* prezzo dell'articolo e la convalida che il valore sia un numero

* indirizzo e-mail del cliente

* prezzo totale (prezzo \* quantità)

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* Un campo della tabella dati denominata `OrderDetails`.

Script di caricamento

```
Example:
Load  *
INLINE [OrderDetails
'{ "order_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total_price": 2400 }'
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* ` OrderDetails
                                   `

Creare le seguenti misure:

* `IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' )`, combinato con la funzione `IsJson`, recupera il testo JSON per `price` e convalida che il valore di `price` sia un numero.

* `JsonGet( OrderDetails, '/customer/email' )`, per recuperare l'indirizzo e-mail del cliente utilizzando il percorso corretto.

* `JsonGet( OrderDetails, '/total_price' ), )`, per recuperare il prezzo totale utilizzando il percorso corretto.

Tabella dei risultati

| OrderDetails | IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' ) | JsonGet( OrderDetails, '/customer/email' ) | JsonGet( OrderDetails, '/total\_price' ), ) |
| --- | --- | --- | --- |
| { "order\_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total\_price": 2400 } | -1 (true) | john.doe@example.com | 2400 |

La prima misura restituisce `-1 true` perché la chiave `price` ha il valore `1200`, che è un numero.

La seconda misura restituisce l'indirizzo e-mail del cliente, `john.doe@example.com`, da `OrderDetails`, utilizzando il percorso corretto della chiave `email` nella stringa JSON.

La terza misura restituisce `2400`, che è il prezzo totale dell'ordine dal campo `OrderDetails`, utilizzando il percorso corretto della chiave `total_price` nella stringa JSON.

Vedere anche:

* [IsJson Funzione per script e grafici](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

* [JsonSet Funzione per script e grafici](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)