JSONL コンバーター
ブラウザ上で JSONL / NDJSON を JSON 配列に変換し、JSON 配列を JSON Lines に戻し、行ごとの検証と有効レコードのエクスポートを行えます。大きな ID などの数値は入力どおりの桁で残ります。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
例:注文ログの大きな注文番号
注文番号などを 64 ビット整数で扱うシステムでは、値が 253 を超えることがあります。JavaScript で JSON.parse() してから JSON.stringify() すると末尾の桁が変わりますが、このツールは JSON.parse() を構文チェックだけに使い、数値は入力の文字をそのまま書き出します。
{"order_no":9007199254740993,"price":1980.00,"store":"渋谷店"}
{"order_no":9007199254740995,"price":550.50,"store":"\u6885\u7530\u5e97"}
[
{
"order_no": 9007199254740993,
"price": 1980.00,
"store": "渋谷店"
},
{
"order_no": 9007199254740995,
"price": 550.50,
"store": "梅田店"
}
]
解析してから文字列に戻す方法では 9007199254740992、9007199254740996、1980、550.5 になります。文字列は JSON.stringify() の標準の書き方で出力するため、"\u6885\u7530\u5e97" は “梅田店” になり、コンパクトな JSONL ではカンマの後の空白も消えます。
逆方向でも数値は残ります。
[
{"order_no": 9007199254740993, "price": 1980.00},
{"order_no": 9007199254740995, "price": 550.50}
]
{"order_no":9007199254740993,"price":1980.00}
{"order_no":9007199254740995,"price":550.50}
コピーと保存
コピーボタンと 2 つの保存ボタンは、最後に成功した変換の結果を使います。JSONL → JSON の後、.json を保存は右側の配列を保存し、 JSONL 側のコピーと.jsonl を保存は変換したレコードを 1 行 1 件のコンパクトな形で出します。貼り付けた原文とは違い、「有効な行だけ変換」で除いたエラー行は含まれず、空白も取り除かれています。 JSON → JSONL の後は、.json を保存が現在の「JSON を整形」の設定で配列を保存します。
最初の変換までボタンは使えません。どちらかのパネルを編集したとき、「空行を無視」「有効な行だけ変換」を切り替えたとき、クリア(またはツール内で Ctrl+L / Cmd+L)を押したとき、変換やファイル読み込みに失敗したときも、すぐに使えなくなります。変換に失敗すると出力側は空になるので、古い入力の結果をコピーすることはありません。自動検証だけではボタンは使えるようになりません。「JSON を整形」を切り替えると、JSONL 側に内容があれば JSONL → JSON をやり直します。
JSONL と JSON 配列
JSON 配列はすべてのレコードを 1 つの大きなドキュメントに包みます。JSONL は各レコードを独立した JSON 値として 1 行に書きます。 この行指向の形は、ログ、ストリーミングエクスポート、コマンドライン処理、大規模データセットに向いています。
例:3 行のエクスポートに壊れた行が 1 つ
次の内容を JSONL パネルに貼り付け、350 ms 後の自動検証を待ちます。
{"id":1,"event":"signup"}
{"id":2,"event":"purchase",}
{"id":3,"event":"cancel"}
カウンターは全 3 行、有効 2、エラー 1、空行 0 になります。問題パネルには2 行目とブラウザのパーサーメッセージが表示され、Chrome では Expected double-quoted property name in JSON at position 27 (line 1 column 28)(位置はその行の先頭から数えた値)です。Firefox と Safari では文言が異なります。この行を直すか有効な行だけ変換をオンにするまで、JSONL → JSON はエラーで止まります。オンにすると 1 件目と 3 件目が出力されて「2 件の JSONL レコードを JSON 配列に変換しました。」と表示され、.jsonl を保存では次の内容が保存されます。
{"id":1,"event":"signup"}
{"id":2,"event":"purchase",}
{"id":3,"event":"cancel"}
{"id":1,"event":"signup"}
{"id":3,"event":"cancel"}
コマンドラインでの同等操作
スクリプトに組み込むなら jq で同じ変換ができます(jq 1.7.1 の実際の出力)。
jq -c '.[]' data.json > data.jsonl # JSON 配列 → JSONL
jq -s '.' data.jsonl > data.json # JSONL → JSON 配列
jq -c . bad.jsonl # 最初のエラーで停止する:
# jq: parse error: Expected another key-value pair at line 2, column 28
jq は最初のエラーで止まります。このツールは全行を解析し、エラー行をまとめて一覧にします。
制限
- 重複キーは最後の値になります。
JSON.parse()と同じで、{"x":1,"x":2}は最初のxの位置で{"x":2}になります。 - 配列の添字のようなキーはオブジェクトの先頭に移り、数値の昇順に並びます(JavaScript のオブジェクトと同じ)。
{"b":1,"2":2,"1":3}は{"1":3,"2":2,"b":1}になります。値は変わりません。 - JSON → JSONL はトップレベルの配列だけを受け付けます。オブジェクトや単一の値では「JSON 入力は配列である必要があります。」と表示されます。
- 1 レコードは 1 行に収める必要があります。複数行に整形したオブジェクトは、またがる行がすべてエラーになります。改行で分割し各行の前後の空白を除くため、Windows の CRLF ファイルはそのまま使えます。
- 問題パネルに表示するのは最初の 40 行までです。エラー数のカウンターは全件を数えます。
FAQ
JSONL とは何ですか?
JSONL は JSON Lines または NDJSON とも呼ばれ、1 行に 1 つの完全な JSON 値を保存する形式です。ログ、データエクスポート、ストリーミング API、AI データセットでよく使われます。
どんな JSON 入力を JSONL に変換できますか?
JSON 配列を貼り付けてください。配列の各アイテムが 1 行のコンパクトな JSONL になります。オブジェクト、配列、文字列、真偽値、null を保持し、数値は書いたとおりの文字で出力するので、9007199254740993・1.50・1e-7 も変わりません。
空行はどう扱われますか?
初期設定では空行を無視します。オプションをオフにすると、空行が行単位の検証問題として表示されます。
有効な JSONL レコードだけをエクスポートできますか?
できます。「有効な行だけ変換」をオンにして JSONL → JSON をクリックすると、JSON 配列には有効なレコードだけが入り、「.jsonl を保存」は同じレコードを 1 行 1 件で保存します。自動検証は行をチェックするだけで、変換が成功するまでコピーと保存のボタンは使えません。
データはどこで処理されますか?
解析、検証、変換、ファイル出力はすべてブラウザ内のローカル JavaScript API で実行されます。