> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firebolt.io/llms.txt
> Use this file to discover all available pages before exploring further.

> Reference material for JSON_VALUE_ARRAY function

# JSON_VALUE_ARRAY

Takes a JSON document and extracts a JSON array of scalar values to SQL `ARRAY(TEXT)` value.
For JSON strings, removes the outermost quotes and unescapes the values.
Other JSON scalars are not changed.
Returns a SQL `NULL` if a non-array is given, or non-scalar value is given (inside the array).

This function pairs with the [JSON\_EXTRACT](/reference-sql/functions-reference/json/json-extract) function, which doesn't convert the JSON values to SQL values.

## Syntax

```sql theme={"theme":{"light":"css-variables","dark":"css-variables"}}
JSON_VALUE_ARRAY(<json>)
```

## Parameters

| Parameter | Description        | Supported input types |
| :-------- | :----------------- | :-------------------- |
| `<json>`  | The JSON document. | `TEXT`                |

## Return Type

`ARRAY(TEXT)`

* If any of the input is `NULL` the output is `NULL` (propagates nulls).

## Examples

For the JSON document used in the examples below, see [JSON common example](/reference-sql/functions-reference/json#json-common-example).
The following example returns `NULL` because `/value/uid` contains a JSON string (not an array), and `'"987654"'` for the raw JSON extract:

<div className="query-window">
  ```
  SELECT JSON_VALUE_ARRAY(JSON_POINTER_EXTRACT('{"key":123,"value":{"uid":"987654","keywords":["insanely","fast","analytics"]}}', '/value/uid')), JSON_POINTER_EXTRACT('{"key":123,"value":{"uid":"987654","keywords":["insanely","fast","analytics"]}}', '/value/uid');
  ```

  | json\_value\_array <span>array(text) null</span> | json\_pointer\_extract <span>text null</span> |
  | :----------------------------------------------- | :-------------------------------------------- |
  | NULL                                             | "987654"                                      |

  <p><span>Rows: 1</span><span>Execution time: 5.65ms</span></p>
</div>

The following example returns the keywords array as SQL `ARRAY(TEXT)`:

<div className="query-window">
  ```
  SELECT JSON_VALUE_ARRAY(JSON_POINTER_EXTRACT('{"value":{"keywords":["insanely","fast","analytics"]}}', '/value/keywords'));
  ```

  | json\_value\_array <span>array(text null) null</span> |
  | :---------------------------------------------------- |
  | \['insanely', 'fast', 'analytics']                    |

  <p><span>Rows: 1</span><span>Execution time: 5.89ms</span></p>
</div>

The following example returns `NULL` for a `NULL` input:

<div className="query-window">
  ```
  SELECT JSON_VALUE_ARRAY(NULL);
  ```

  | json\_value\_array <span>array(text) null</span> |
  | :----------------------------------------------- |
  | NULL                                             |

  <p><span>Rows: 1</span><span>Execution time: 5.91ms</span></p>
</div>
