

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzioni JSON
<a name="json-functions-spark"></a>

Quando è necessario memorizzare un insieme relativamente piccolo di coppie chiave-valore, è possibile risparmiare spazio memorizzando i dati nel formato JSON. Poiché le stringhe JSON possono essere memorizzate in una singola colonna, l'utilizzo di JSON potrebbe essere più efficiente rispetto all'archiviazione dei dati in formato tabulare. 

**Example**  
Ad esempio, supponiamo di avere una tabella sparsa, in cui è necessario disporre di molte colonne per rappresentare appieno tutti gli attributi possibili. Tuttavia, la maggior parte dei valori delle colonne sono NULL per una determinata riga o colonna. Utilizzando JSON per l'archiviazione, potresti essere in grado di archiviare i dati di una riga in coppie chiave-valore in una singola stringa JSON ed eliminare le colonne della tabella scarsamente popolate. 



Inoltre, è possibile modificare facilmente le stringhe JSON per memorizzare coppie chiavi:valore aggiuntive senza dover aggiungere colonne a una tabella. 

È consigliabile usare un JSON con parsimonia. JSON non è una buona scelta per archiviare set di dati di grandi dimensioni perché, archiviando dati diversi in una singola colonna, JSON non utilizza l'architettura dell'archivio di colonne. AWS Clean Rooms 

JSON utilizza stringhe di testo con codifica UTF-8, pertanto le stringhe JSON possono essere memorizzate come tipi di dati CHAR o VARCHAR. Utilizzare VARCHAR se le stringhe includono caratteri multibyte.

Le stringhe JSON devono essere formattate in modo corretto con JSON, in base alle seguenti regole: 
+ Il JSON di livello radice può essere un oggetto JSON o un array JSON. Un oggetto JSON è un insieme non ordinato di coppie di chiave:valore separate da virgole racchiuse da parentesi graffe. 

  Ad esempio, `{"one":1, "two":2} `
+ Un array JSON è un insieme ordinato di valori separati da virgola racchiusi tra parentesi. 

  Un esempio è quanto segue: `["first", {"one":1}, "second", 3, null] `
+ Gli array JSON utilizzano un indice basato su zero; il primo elemento di un array è in posizione 0. In una coppia chiave:valore JSON, la chiave è una stringa racchiusa tra virgolette doppie. 
+ Un valore JSON può essere uno dei seguenti: 
  + Oggetto JSON 
  + Array JSON 
  + Stringa tra virgolette doppie
  + Numero (intero e a virgola mobile) 
  + Booleano
  + Null 
+ Gli oggetti vuoti e gli array vuoti sono valori JSON validi.
+ I campi JSON fanno distinzione tra maiuscole e minuscole. 
+ Lo spazio bianco tra gli elementi strutturali JSON (ad esempio `{ }, [ ]`) viene ignorato. 

**Topics**
+ [Funzione GET\$1JSON\$1OBJECT](GET_JSON_OBJECT.md)
+ [Funzione TO\$1JSON](TO_JSON.md)

# Funzione GET\$1JSON\$1OBJECT
<a name="GET_JSON_OBJECT"></a>

La funzione GET\$1JSON\$1OBJECT estrae un oggetto json da. `path` 

## Sintassi
<a name="GET_JSON_OBJECT-syntax"></a>

```
get_json_object(json_txt, path)
```

## Argomenti
<a name="GET_JSON_OBJECT-arguments"></a>

*json\$1txt*  
Un'espressione STRING contenente JSON ben formato.

*path*  
Un valore letterale STRING con un'espressione di percorso JSON ben formata.

## Valori restituiti
<a name="GET_JSON_OBJECT-returns"></a>

Restituisce una STRING.

Viene restituito un valore NULL se l'oggetto non può essere trovato.

## Esempio
<a name="GET_JSON_OBJECT-example"></a>

L'esempio seguente estrae un valore da un oggetto JSON. Il primo argomento è una stringa JSON che rappresenta un oggetto semplice con una singola coppia chiave-valore. Il secondo argomento è un'espressione di percorso JSON. Il `$` simbolo rappresenta la radice dell'oggetto JSON e la `.a` parte specifica che vogliamo estrarre il valore associato alla chiave "»`a`. L'output della funzione è '`b`', che è il valore associato al tasto "`a`" nell'oggetto JSON di input.

```
SELECT get_json_object('{"a":"b"}', '$.a');
 b
```

# Funzione TO\$1JSON
<a name="TO_JSON"></a>

La funzione TO\$1JSON converte un'espressione di input in una rappresentazione di stringa JSON. La funzione gestisce la conversione di diversi tipi di dati (come numeri, stringhe e valori booleani) nelle rappresentazioni JSON corrispondenti.

La funzione TO\$1JSON è utile quando è necessario convertire dati strutturati (come righe di database o oggetti JSON) in un formato più portatile e autodescrittivo come JSON. Ciò può essere particolarmente utile quando è necessario interagire con altri sistemi o servizi che prevedono dati in formato JSON.

## Sintassi
<a name="TO_JSON-syntax"></a>

```
to_json(expr[, options])
```

## Argomenti
<a name="TO_JSON-arguments"></a>

*expr*  
L'espressione di input che desideri convertire in una stringa JSON. Può essere un valore, una colonna o qualsiasi altra espressione SQL valida.

*options*  
Un set opzionale di opzioni di configurazione che possono essere utilizzate per personalizzare il processo di conversione JSON. Queste opzioni possono includere cose come la gestione di valori nulli, la rappresentazione di valori numerici e il trattamento di caratteri speciali.

## Valori restituiti
<a name="TO_JSON-returns"></a>

Restituisce una stringa JSON con un determinato valore di struttura

## Esempi
<a name="TO_JSON-examples"></a>

L'esempio seguente converte una struttura denominata (un tipo di dati strutturati) in una stringa JSON. Il primo argomento `(named_struct('a', 1, 'b', 2)` () è l'espressione di input che viene passata alla `to_json()` funzione. Crea una struttura denominata con due campi: «a» con un valore di 1 e «b» con un valore di 2. La funzione to\$1json () prende la struttura denominata come argomento e la converte in una rappresentazione di stringa JSON. L'output è`{"a":1,"b":2}`, che è una stringa JSON valida che rappresentava la struttura denominata.

```
SELECT to_json(named_struct('a', 1, 'b', 2));
 {"a":1,"b":2}
```

L'esempio seguente converte una struttura denominata che contiene un valore di timestamp in una stringa JSON, con un formato timestamp personalizzato. Il primo argomento (`named_struct('time', to_timestamp('2015-08-26', 'yyyy-MM-dd'))`) crea una struttura denominata con un singolo campo 'time' che contiene il valore del timestamp. Il secondo argomento (`map('timestampFormat', 'dd/MM/yyyy')`) crea una mappa (dizionario chiave-valore) con una singola coppia chiave-valore, dove la chiave è 'timestampFormat' e il valore è ''. dd/MM/yyyy'. This map is used to specify the desired format for the timestamp value when converting it to JSON. The to\$1json() function converts the named struct into a JSON string. The second argument, the map, is used to customize the timestamp format to 'dd/MM/yyyy L'output è `{"time":"26/08/2015"}` una stringa JSON con un singolo campo 'time' che contiene il valore del timestamp nel formato '' desiderato. dd/MM/yyyy

```
SELECT to_json(named_struct('time', to_timestamp('2015-08-26', 'yyyy-MM-dd')), map('timestampFormat', 'dd/MM/yyyy'));
 {"time":"26/08/2015"}
```