

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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à.

# Funzione JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT"></a>

**Nota**  
JSON\$1PARSE e le funzioni associate analizzano i valori JSON come SUPER, che Amazon Redshift analizza in modo più efficiente di VARCHAR.  
Invece di utilizzare JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT, consigliamo di analizzare le stringhe JSON utilizzando [Funzione JSON\$1PARSE](JSON_PARSE.md) per ottenere un valore SUPER. Quindi esegui query sull’elemento desiderato con il relativo indice di array, utilizzando la sintassi `value[element position]`. Per ulteriori informazioni sull’esecuzione di query sugli elementi dell’array nei valori SUPER, consulta [Query sui dati semistrutturati](query-super.md).

JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT restituisce un elemento di array JSON nell'array più esterno di una stringa JSON, utilizzando un indice con base zero. Il primo elemento in un array è in posizione 0. Se l’indice è negativo o fuori intervallo, JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT restituisce `NULL`. Se l'argomento *null\$1if\$1invalid* è impostato su `TRUE` e la stringa JSON non è valida, la funzione restituisce `NULL` invece di restituire un errore.

Per ulteriori informazioni, consulta [Funzioni JSON](json-functions.md). 

## Sintassi
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT-synopsis"></a>

```
JSON_EXTRACT_ARRAY_ELEMENT_TEXT('json string', pos [, null_if_invalid ] )
```

## Arguments (Argomenti)
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT-arguments"></a>

 *json\$1string*  
Una stringa JSON correttamente formattata.

*pos*  
Un `INTEGER` che rappresenta l'indice dell'elemento array da restituire, utilizzando un indice di array con base zero.

*null\$1if\$1invalid*  
(Facoltativo) Un valore `BOOLEAN` che specifica se restituire `NULL` se la stringa JSON di input non è valida, invece di restituire un errore. Per restituire `NULL` se JSON non è valido, specifica `true` (`t`). Per restituire un errore se JSON non è valido, specificare `false` (`f`). Il valore predefinito è `false`.

## Tipo restituito
<a name="JSON_EXTRACT_ARRAY_ELEMENT_TEXT-return"></a>

`VARCHAR`  
Una stringa `VARCHAR` che rappresenta l'elemento dell'array JSON a cui fa riferimento *pos*.

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

Per restituire un elemento di array alla posizione 2, che è il terzo elemento di un indice di array a base zero, utilizza l'esempio seguente. 

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('[111,112,113]', 2);
 
+---------------------------------+
| json_extract_array_element_text |
+---------------------------------+
|                             113 |
+---------------------------------+
```

Per restituire un errore poiché JSON non è valido, utilizza l'esempio seguente.

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1);
 
ERROR: invalid json array object ["a",["b",1,["c",2,3,null,]]]
```

Per impostare *null\$1if\$1invalid* su *true*, in modo che l'istruzione restituisca `NULL` invece di restituire un errore di formato JSON non valido, utilizza l'esempio seguente.

```
SELECT JSON_EXTRACT_ARRAY_ELEMENT_TEXT('["a",["b",1,["c",2,3,null,]]]',1,true);
 
+---------------------------------+
| json_extract_array_element_text |
+---------------------------------+
| NULL                            |
+---------------------------------+
```

Considera le seguenti istruzioni di esempio. Se la stringa JSON fornita o l’indice è NULL, JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT restituisce NULL, indipendentemente dal valore di qualsiasi altro parametro. 

```
--Statement where json_string is NULL.
SELECT json_extract_array_element_text(NULL, 0)

 json_extract_array_element_text
---------------------------------
                            NULL

--Statement where pos is NULL and json_string is invalid JSON.
SELECT json_extract_array_element_text('invalid_json', NULL);

 json_extract_array_element_text
---------------------------------
                            NULL

--Statement where json_string is NULL and null_if_invalid is FALSE.
SELECT json_extract_array_element_text(NULL, 0, FALSE);

 json_extract_array_element_text
---------------------------------
                            NULL
```

Considera le seguenti istruzioni di esempio. Quando *null\$1if\$1invalid* è TRUE, JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT restituisce NULL quando *json\$1string* è JSON non valido. Se *null\$1if\$1invalid* è FALSE o non è impostato, la funzione restituisce un errore quando *json\$1string* non è valido.

```
--Statement with invalid JSON where null_if_invalid is TRUE.
SELECT json_extract_array_element_text('invalid_json', 0, TRUE);

 json_extract_array_element_text
---------------------------------
                            NULL
                            
--Statement with invalid JSON where null_if_invalid is FALSE.
SELECT json_extract_array_element_text('invalid_json', 0);

ERROR:  JSON parsing error
```

Considera l’esempio seguente, dove *json\$1string* è JSON valido e *pos* fa riferimento a un valore JSON `null`. In questo caso JSON\$1EXTRACT\$1ARRAY\$1ELEMENT\$1TEXT restituisce NULL, indipendentemente dal valore di *null\$1if\$1invalid*.

```
--Statement selecting a null value.
SELECT json_extract_array_element_text('[null]', 0);

  json_extract_array_element_text 
----------------------------------
                             NULL
```