機能
JSON Lines(JSONL、NDJSON とも呼ばれます)は 1 行に 1 つの JSON 値を格納する形式です。ファイル全体を読み込まずに 1 レコードずつ読み書きできるため、ログ、データエクスポート、ストリーミング API、BigQuery や Elasticsearch の一括投入、OpenAI のファインチューニング用ファイルなどの機械学習データセットでよく使われます。
しかし、多くのツールは 1 つの JSON 配列を前提としています。このツールは JSON Lines を整形済みの JSON 配列に変換し、逆に JSON 配列を 1 行 1 レコードのコンパクトな JSON Lines に戻します。
使い方
- 変換方向 を選びます:JSON Lines → JSON または JSON → JSON Lines。
- データを貼り付けるか、
.jsonl・.ndjson・.jsonファイルをアップロードするか、サンプル を押します。 - JSON を出力する場合は、インデントを 2 または 4 スペース、あるいは 1 行にまとめる 圧縮 から選びます。
- 結果をコピーまたはダウンロードするか、入力として使う で逆変換します。
ある行が正しい JSON でない場合、エラーに行番号と列番号が表示されるので、壊れたレコードにすぐ移動できます。何千件ものログの中に 1 件だけ途中で切れた行があるときに便利です。
例
次の 3 行の JSON Lines は:
{"id": 1, "event": "signup"}
{"id": 2, "event": "login"}
{"id": 3, "event": "logout"}
次の JSON 配列になります:
[
{
"id": 1,
"event": "signup"
},
{
"id": 2,
"event": "login"
},
{
"id": 3,
"event": "logout"
}
]
逆方向では、配列の各要素がスペースなしの 1 行として書き出され、ファイルの末尾は改行になります。
使い分け
レコードを 1 件ずつ生成・処理する場合は JSON Lines を使います。ログへの追記、結果のストリーミング、大きなデータセットの複数ワーカーへの分割、grep・head・wc -l など行単位のツールでの処理などです。設定ファイル、テスト用のフィクスチャ、REST エンドポイントのレスポンスボディなど、プログラムが全体を一度に必要とする場合は JSON 配列を使います。
よくある質問
› JSONL、NDJSON、JSON Lines の違いは何ですか?
同じ形式の別名です。1 行に 1 つの完全な JSON 値を書き、改行で区切ります。JSON Lines(.jsonl)と改行区切り JSON(.ndjson)は名前と拡張子が違うだけです。
› 空行は使えますか?
読み込み時に空行と末尾の改行は無視されます。Windows の改行(CRLF)や UTF-8 の BOM も扱えます。
› 整形された JSON で、1 つのオブジェクトが複数行にまたがっています。なぜエラーになるのですか?
JSON Lines では各値を 1 行に収める必要があります。入力が通常の JSON 配列なら、変換方向を JSON → JSON Lines に切り替えてください。整形されたオブジェクトが並んでいるだけなら、先に配列にまとめてください。
› 変換で数値やキーの順序は変わりますか?
変わりません。値とキーの順序はそのままで、変わるのは空白だけです。JavaScript の安全な整数範囲(約 9 千兆)を超える巨大な整数は、ブラウザーで動く他の JSON ツールと同様に精度が落ちることがあります。