JSON を NDJSON に変換

ここで JSON を NDJSON に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 可逆 何も捨てられません。NDJSONはJSONが持っていたものをそのまま保持します。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

NDJSON は、1 行に 1 つの JSON 値を並べた形式

NDJSON(改行区切りの JSON)は、ファイル全体を 1 つの構造として読むのではなく、1 行ごとに独立した JSON 値として読める形式です。ログ収集や、レコードを 1 件ずつ処理するストリーム処理のパイプラインでよく使われます。

巨大な配列を 1 つの JSON として扱うより、NDJSON のほうがメモリーに全体を載せずに 1 行ずつ処理できるという利点があります。

配列なら、要素ごとに 1 行になる

入力が JSON の配列であれば、その要素それぞれが NDJSON の 1 行として書き出されます。100 件のデータが入った配列は、100 行の NDJSON になります。

配列の中に配列やオブジェクトが混在していても、それぞれがそのまま 1 行分の JSON として出力されます。中身の構造そのものが変わることはありません。

配列でない場合は 1 行だけになる

入力が配列ではなく、1 つのオブジェクトや単一の値であった場合、その値がそのまま 1 行の NDJSON として出力されます。何行にも分割されることはありません。

NDJSON への変換を意図するなら、事前にデータが配列の形になっているかを確認しておくと、期待どおりの行数の出力になります。

階層構造は保たれる

CSV や TSV への変換とは違い、NDJSON への変換では入れ子のオブジェクトや配列がドット区切りの列に平らにされることはありません。各行の JSON 値は、元のオブジェクトや配列の構造をそのまま保ちます。

JSON の表現力をそのまま保ちながら、1 行ずつ処理できる形式に変えたいときに向いた変換です。

改行の扱い

各行はテキストの改行で区切られ、行の中に改行を含む値がある場合でも、JSON としてエスケープされた形でその行の中に収まります。行の境界と JSON の値の境界が一致しない、ということは起きません。

そのため、この NDJSON をテキストエディターで開いても、1 行 = 1 レコードという対応関係は崩れません。

どのくらいの大きさまで扱えるか

変換はブラウザーの中で行われ、限界はメモリーです。データ全体をいったんメモリー上に展開してから書き出すためです。数十メガバイトは普通に通ります。

数百メガバイト規模のログデータを継続的に扱う場合は、ブラウザーの変換機ではなく、ストリーム処理ができる専用のツールのほうが向いています。

JSON を NDJSON に変換する手順

  1. お手元の JSON ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に NDJSON を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった NDJSON ファイル をダウンロードします。

JSON と NDJSON——何が変わるか

JSONとNDJSONの比較
JSONNDJSON
正式名称JavaScript Object NotationNewline-Delimited JSON
拡張子.json.ndjson, .jsonl
メディアタイプapplication/jsonapplication/x-ndjson
最初の公開20012013
仕様RFC 8259
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるかすべてのブラウザ対応なし
代わりに検討される形式XML, YAMLCSV

残るもの

失われるものはありません。JSON も NDJSON も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

結果を開く

NDJSON を読めるブラウザーはありません。その点では、2 つのうち通用する場所が狭いのはこちらです。送る前に、受け取る側がこれを受け付けるかどうか確かめてください。

jqは JSON と NDJSON のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

どちらの形式が何のためのものか

JSON は 2001 年に登場しました。 RFC 8259 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

NDJSON は 2013 年から使われています。jqとpandasがこの形式を読めます。

JSON から NDJSON:よくある質問

JSON ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

JSON から NDJSON への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

JSON を NDJSON に変換すると品質は落ちますか。

いいえ。NDJSON は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。

NDJSON ファイル はブラウザーで開けますか。

NDJSON を読めるブラウザーはありません。その点では、2 つのうち通用する場所が狭いのはこちらです。送る前に、受け取る側がこれを受け付けるかどうか確かめてください。

JSON から NDJSON への変換は可逆ですか。

失われるものはありません。JSON も NDJSON も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

これらのフォーマットについて