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

> JSON フォーマットのドキュメント

# JSON

| 入力 | 出力 | 別名 |
| -- | -- | -- |
| ✔  | ✔  |    |

<div id="description">
  ## 説明
</div>

`JSON` フォーマットは、JSON フォーマットでデータを読み取り、出力します。

`JSON` フォーマットは次の内容を返します。

| Parameter                    | Description                                                                                                                                                                                                                      |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `meta`                       | カラム名と型。                                                                                                                                                                                                                          |
| `data`                       | データテーブル。                                                                                                                                                                                                                         |
| `rows`                       | 出力行数の合計。                                                                                                                                                                                                                         |
| `rows_before_limit_at_least` | LIMIT がなかった場合に出力されていたと見込まれる行数の下限推定値。クエリに LIMIT が含まれている場合にのみ出力されます。この推定値は、limit transform の前にクエリパイプラインで処理されたデータブロックに基づいて計算されますが、その後 limit transform によって破棄される場合があります。ブロックがクエリパイプライン内で limit transform に到達していない場合、それらはこの推定に含まれません。 |
| `statistics`                 | `elapsed`、`rows_read`、`bytes_read` などの統計情報。                                                                                                                                                                                      |
| `totals`                     | 合計値 (WITH TOTALS を使用する場合) 。                                                                                                                                                                                                      |
| `extremes`                   | 極値 (extremes が 1 に設定されている場合) 。                                                                                                                                                                                                   |

`JSON` 型は JavaScript と互換性があります。これを保証するため、いくつかの文字は追加でエスケープされます。

* スラッシュ `/` は `\/` にエスケープされます
* 一部のブラウザで問題を引き起こす代替改行文字 `U+2028` と `U+2029` は、`\uXXXX` にエスケープされます。
* ASCII 制御文字はエスケープされます。具体的には、バックスペース、フォームフィード、ラインフィード、キャリッジリターン、水平タブはそれぞれ `\b`、`\f`、`\n`、`\r`、`\t` に置き換えられ、00-1F の範囲にある残りのバイトも `\uXXXX` シーケンスで表されます。
* 無効な UTF-8 シーケンスは置換文字 � に変換されるため、出力テキストは有効な UTF-8 シーケンスのみで構成されます。

JavaScript との互換性のため、Int64 と UInt64 の整数はデフォルトで二重引用符で囲まれます。
引用符を外すには、設定パラメータ [`output_format_json_quote_64bit_integers`](/docs/ja/reference/settings/formats#output_format_json_quote_64bit_integers) を `0` に設定します。

ClickHouse は [NULL](/docs/ja/reference/syntax) をサポートしており、JSON 出力では `null` として表示されます。出力で `+nan`、`-nan`、`+inf`、`-inf` の値を有効にするには、[output\_format\_json\_quote\_denormals](/docs/ja/reference/settings/formats#output_format_json_quote_denormals) を `1` に設定します。

<div id="example-usage">
  ## 使用例
</div>

例:

```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">
  ## フォーマット設定
</div>

JSON入力フォーマットでは、設定 [`input_format_json_validate_types_from_metadata`](/docs/ja/reference/settings/formats#input_format_json_validate_types_from_metadata) が `1` に設定されている場合、
入力データ内のメタデータに含まれる型が、テーブル内の対応するカラムの型と比較されます。

<div id="see-also">
  ## 関連項目
</div>

* [JSONEachRow](/docs/ja/reference/formats/JSON/JSONEachRow) フォーマット
* [output\_format\_json\_array\_of\_rows](/docs/ja/reference/settings/formats#output_format_json_array_of_rows) 設定
