本文へスキップ

JSON Lines変換

JSON Lines Converter

NDJSONとJSON配列を相互に変換し、解析できない行は変換を止めずに行番号で知らせます。

JSONの配列をJSON Lines——1行1レコードで、ログのパイプラインやBigQueryが求める形式——に変換し、また元に戻します。区切りがまったく無いままつながったJSONの値の並びも読みます。いくつかのロギングライブラリがその形で出力し、`JSON.parse`はきっぱり拒否する形です。

🔒 ブラウザの中だけで動きますjsonlndjsonconvertstream
変換

入力

.json・.jsonl・.ndjson ファイルを置く

このタブの中で読みます。アップロードはしません。

JSON の配列、または区切りがまったくない値の連なりを受け取ります。後者はいくつかのロギングライブラリが吐く形で、`JSON.parse` が受け付けない形です。

出力

プレビュー

先頭のレコードを表にしたもの。
tslevelmsgms
2025-08-27T09:00:00Zinfostarted12
2025-08-27T09:00:04Zwarnslow query2100
2025-08-27T09:00:09Zerrorupstream 502

先頭 200 レコードに現れるキーをすべて集めたものです。

レコード

3

入力

246 byte

出力

209 byte

使い方

  1. 方向を選びます

    ストリーミングで流し込む相手があるなら配列から行へ、ログファイルを1つの文書として扱いたいなら行から配列へ進みます。

  2. ファイルを置きます

    `.json`、`.jsonl`、`.ndjson`をすべて受け付けます。NDJSONとJSON Linesは、名前が2つあるだけの同じ形式です。

  3. パースできなかった行を確認します

    壊れた行があっても変換は止まりません。行番号と失敗したテキストを並べます。多くは、ローテーションされたログの末尾で切れたレコードです。

  4. プレビューで形を見ます

    先頭200レコードのキーをすべて合わせた表を出します。ログの行の半分にだけ、ほかには無いフィールドがあると気づく、いちばん早い方法です。

よくある質問

JSON LinesとNDJSONは何が違いますか

実質的な違いはありません。同じ約束事に2つの名前が付いているだけです。1行にJSONの値を1つ、改行で区切り、囲む配列は無し。ツールによって使う拡張子が違うだけで、ここではどちらも読みます。

数ギガバイトのログファイルも扱えますか

扱えません。ファイル全体をタブに読み込み、メモリの中で変換し、結果をもう1つの文字列として抱えます。実際上の限界は数十メガバイトです。それより大きければ、コマンドラインの`jq -c`が正しい道具で、そちらはストリーミングで処理します。

キーを並べ替えるのはなぜですか

JSON Linesはたいてい`diff`で比べますが、`diff`は行単位の比較だからです。同じデータを2回書き出してキーの順序が違えば、行はまったく別のものになります。並べ替えれば同じ文字列になります。

入れ子のオブジェクトはどうなりますか

入れ子のままです。JSON Linesのレコードは完全なJSONの値なので、入れ子は問題になりませんし、何も平らにしません。列に開きたいなら、JSON→CSVのツールが平らにするほうです。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。