# json_compact_each_row

## Description

One positional JSON array per row. Field order follows the INSERT column list or result projection. There is no header.

Input and output. Select it with `FORMAT json_compact_each_row`. Names ignore ASCII case; use the snake_case name shown here.

Every row is an independent JSON array with fields in projection or INSERT-column order. There is no names or types header, so the consumer must already know the schema.

NULL uses JSON null. By default rows must match the expected width; json_compact_uneven_rows can supply defaults for missing positions and validate then skip extras.

```text
SELECT expressions FORMAT json_compact_each_row;
INSERT INTO table [(columns)] [SETTINGS ...] FORMAT json_compact_each_row
<data>
```

## Example usage

```sql
SELECT CAST(7 AS Int64) AS id, 'Ada' AS name FORMAT json_compact_each_row;
```

```text
[7, "Ada"]
```

## Format settings

Use a statement `SETTINGS` clause; these options are not persisted by `SET`.

| Setting                            | Type     | Default | Meaning                                                                                          |
| ---------------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------ |
| `json_array_of_rows`               | `Bool`   | `0`     | Wrap all output rows in one JSON array.                                                          |
| `json_arrays_as_strings`           | `Bool`   | `1`     | Accept JSON arrays in string input columns and retain their JSON text.                           |
| `json_bools_as_numbers`            | `Bool`   | `1`     | Accept JSON Boolean input in numeric columns as zero or one.                                     |
| `json_bools_as_strings`            | `Bool`   | `1`     | Accept JSON Boolean input in string columns as true or false text.                               |
| `json_compact_uneven_rows`         | `Bool`   | `0`     | Give missing positional fields their SQL or native defaults and validate then skip extra fields. |
| `json_empty_as_default`            | `Bool`   | `0`     | Give empty JSON string fields their SQL or native type default.                                  |
| `json_escape_slashes`              | `Bool`   | `1`     | Escape unescaped forward slashes in JSON output strings.                                         |
| `json_named_tuples_as_objects`     | `Bool`   | `1`     | Read and write named Tuple values as objects; otherwise use positional arrays.                   |
| `json_numbers_as_strings`          | `Bool`   | `1`     | Accept JSON numbers in string input columns and retain their exact spelling.                     |
| `json_objects_as_strings`          | `Bool`   | `1`     | Accept JSON objects in string input columns and retain their JSON text.                          |
| `json_quote_decimals`              | `Bool`   | `0`     | Write fixed-point decimal output values as JSON strings.                                         |
| `json_quote_large_floats`          | `Bool`   | `0`     | Write finite Float64 output values as JSON strings.                                              |
| `json_quote_large_integers`        | `Bool`   | `0`     | Write integers of at least 64 bits as JSON strings; retained narrow types stay numeric.          |
| `json_quote_special_floats`        | `Bool`   | `0`     | Write non-finite floats as inf, -inf, nan, or -nan strings instead of JSON null.                 |
| `json_strict_escapes`              | `Bool`   | `1`     | Reject invalid JSON escapes; otherwise preserve their literal backslash spelling.                |
| `json_tuple_ignore_unknown_fields` | `Bool`   | `0`     | Validate then ignore object members outside a named Tuple declaration.                           |
| `json_tuple_missing_as_default`    | `Bool`   | `1`     | Give missing named Tuple members their declared type defaults.                                   |
| `snappy_mode`                      | `String` | `basic` | Read Snappy client files as basic (Hadoop blocks) or framed (standard streaming format).         |
