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

> Documentación sobre el formato JSON

# JSON

| Entrada | Salida | Alias |
| ------- | ------ | ----- |
| ✔       | ✔      |       |

<div id="description">
  ## Descripción
</div>

El formato `JSON` lee y genera datos en formato JSON.

El formato `JSON` devuelve lo siguiente:

| Parameter                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `meta`                       | Nombres y tipos de columnas.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `data`                       | Tablas de datos.                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `rows`                       | El número total de filas de salida.                                                                                                                                                                                                                                                                                                                                                                                                             |
| `rows_before_limit_at_least` | La estimación mínima del número de filas que habría habido sin LIMIT. Solo se devuelve si la consulta contiene LIMIT. Esta estimación se calcula a partir de los bloques de datos procesados en el pipeline de consulta antes de la transformación LIMIT, pero después puede ser descartada por dicha transformación. Si los bloques ni siquiera llegaron a la transformación LIMIT en el pipeline de consulta, no participan en la estimación. |
| `statistics`                 | Estadísticas como `elapsed`, `rows_read`, `bytes_read`.                                                                                                                                                                                                                                                                                                                                                                                         |
| `totals`                     | Valores totales (cuando se usa WITH TOTALS).                                                                                                                                                                                                                                                                                                                                                                                                    |
| `extremes`                   | Valores extremos (cuando `extremes` se establece en 1).                                                                                                                                                                                                                                                                                                                                                                                         |

El tipo `JSON` es compatible con JavaScript. Para garantizarlo, algunos caracteres se escapan adicionalmente:

* la barra `/` se escapa como `\/`
* los saltos de línea alternativos `U+2028` y `U+2029`, que causan problemas en algunos navegadores, se escapan como `\uXXXX`.
* Los caracteres de control ASCII se escapan: retroceso, salto de página, salto de línea, retorno de carro y tabulación horizontal se reemplazan por `\b`, `\f`, `\n`, `\r`, `\t`, así como los bytes restantes en el rango 00-1F mediante secuencias `\uXXXX`.
* Las secuencias UTF-8 no válidas se sustituyen por el carácter de reemplazo � para que el texto de salida conste de secuencias UTF-8 válidas.

Para mantener la compatibilidad con JavaScript, los enteros Int64 y UInt64 se encierran entre comillas dobles de forma predeterminada.
Para quitar las comillas, puede establecer el parámetro de configuración [`output_format_json_quote_64bit_integers`](/docs/es/reference/settings/formats#output_format_json_quote_64bit_integers) en `0`.

ClickHouse admite [NULL](/docs/es/reference/syntax), que se muestra como `null` en la salida JSON. Para habilitar los valores `+nan`, `-nan`, `+inf`, `-inf` en la salida, establezca [output\_format\_json\_quote\_denormals](/docs/es/reference/settings/formats#output_format_json_quote_denormals) en `1`.

<div id="example-usage">
  ## Ejemplo de uso
</div>

Ejemplo:

```sql theme={null}
SELECT SearchPhrase, count() AS c FROM test.hits GROUP BY SearchPhrase WITH TOTALS ORDER BY c DESC LIMIT 5 FORMAT JSON
```

```json theme={null}
{
        "meta":
        [
                {
                        "name": "num",
                        "type": "Int32"
                },
                {
                        "name": "str",
                        "type": "String"
                },
                {
                        "name": "arr",
                        "type": "Array(UInt8)"
                }
        ],

        "data":
        [
                {
                        "num": 42,
                        "str": "hello",
                        "arr": [0,1]
                },
                {
                        "num": 43,
                        "str": "hello",
                        "arr": [0,1,2]
                },
                {
                        "num": 44,
                        "str": "hello",
                        "arr": [0,1,2,3]
                }
        ],

        "rows": 3,

        "rows_before_limit_at_least": 3,

        "statistics":
        {
                "elapsed": 0.001137687,
                "rows_read": 3,
                "bytes_read": 24
        }
}
```

<div id="format-settings">
  ## Configuración de formato
</div>

Para el formato de entrada JSON, si la configuración [`input_format_json_validate_types_from_metadata`](/docs/es/reference/settings/formats#input_format_json_validate_types_from_metadata) se establece en `1`,
los tipos definidos en los metadatos de los datos de entrada se compararán con los tipos de las columnas correspondientes de la tabla.

<div id="see-also">
  ## Véase también
</div>

* formato [JSONEachRow](/docs/es/reference/formats/JSON/JSONEachRow)
* ajuste [output\_format\_json\_array\_of\_rows](/docs/es/reference/settings/formats#output_format_json_array_of_rows)
