結論から
- JSON Linesは、構造化データを1行に1つのJSON値として保存するテキスト形式で、BOMなしのUTF-8を使用し、空行を含めないことが必要です。
- WindowsやmacOSでは、UTF-8対応のテキストエディターから開きます。スマートフォンでは、対象ファイルにアクセスでき、UTF-8を読めるエディターを使います。扱えるサイズはアプリによって異なります。データ処理では各行をJSONパーサーで個別に解析してください。行単位の構造はUnixのテキスト処理ツールやシェルのパイプでも扱えます。改行はLFとCRLFに対応します。末尾の改行はJSON Linesでは推奨、NDJSONでは各JSONテキストの後に必須です。
- 形式自体のリスクは低く、正しいJSON構文には代入や関数呼び出しが含まれません。ただし、信頼できないテキストをevalなどで解析するとコード実行のリスクが生じます。JSONパーサーを使用してください。解析できることは、内容の信頼性や変換後の値の完全な保持を保証しません。
JSON Lines(.jsonl・.ndjson)ファイルの開き方と変換
JSON Linesは改行区切りのJSONとも呼ばれ、レコード、ログ、メッセージを1件ずつ処理する用途に適しています。各行にはオブジェクト、配列、スカラー値を記述でき、nullも有効です。JSON Linesの拡張子は.jsonlで、NDJSON仕様は.ndjsonを推奨しています。JSON Linesの文書はapplication/jsonlを提案していますが、未標準化と明記しています。NDJSONはapplication/x-ndjsonを推奨しています。
通常のJSON文書に変換する場合は、各行の値を元の順序で1つの配列にまとめます。これは両形式の構造から導かれる変換方法で、拡張子を変更するだけでは変換できません。解析・出力の前に、重複するオブジェクトキーと数値精度を確認してください。CSVに変換する際は、配列、入れ子の値、フィールドが異なるレコードを列へどう割り当てるかも決める必要があります。
開き方
WindowsやmacOSでは、UTF-8対応のテキストエディターから開きます。スマートフォンでは、対象ファイルにアクセスでき、UTF-8を読めるエディターを使います。扱えるサイズはアプリによって異なります。データ処理では各行をJSONパーサーで個別に解析してください。行単位の構造はUnixのテキスト処理ツールやシェルのパイプでも扱えます。改行はLFとCRLFに対応します。末尾の改行はJSON Linesでは推奨、NDJSONでは各JSONテキストの後に必須です。
WindowsやmacOSでは、UTF-8対応のテキストエディターから開きます。スマートフォンでは、対象ファイルにアクセスでき、UTF-8を読めるエディターを使います。扱えるサイズはアプリによって異なります。データ処理では各行をJSONパーサーで個別に解析してください。行単位の構造はUnixのテキスト処理ツールやシェルのパイプでも扱えます。改行はLFとCRLFに対応します。末尾の改行はJSON Linesでは推奨、NDJSONでは各JSONテキストの後に必須です。
通常のJSON文書に変換する場合は、各行の値を元の順序で1つの配列にまとめます。これは両形式の構造から導かれる変換方法で、拡張子を変更するだけでは変換できません。解析・出力の前に、重複するオブジェクトキーと数値精度を確認してください。CSVに変換する際は、配列、入れ子の値、フィールドが異なるレコードを列へどう割り当てるかも決める必要があります。
安全チェック
形式自体のリスクは低く、正しいJSON構文には代入や関数呼び出しが含まれません。ただし、信頼できないテキストをevalなどで解析するとコード実行のリスクが生じます。JSONパーサーを使用してください。解析できることは、内容の信頼性や変換後の値の完全な保持を保証しません。
送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。
変換するときは
通常のJSON文書に変換する場合は、各行の値を元の順序で1つの配列にまとめます。これは両形式の構造から導かれる変換方法で、拡張子を変更するだけでは変換できません。解析・出力の前に、重複するオブジェクトキーと数値精度を確認してください。CSVに変換する際は、配列、入れ子の値、フィールドが異なるレコードを列へどう割り当てるかも決める必要があります。
元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。
よくある質問
JSON Linesファイルとは何に使う形式ですか?
1行に1つのJSON値を保存するテキスト形式で、レコード、ログ、メッセージを1件ずつ処理する用途に使います。各行にはオブジェクト、配列、スカラー値を記述でき、nullも有効です。空行はJSON Linesの有効なレコードではありません。
WindowsでJSONLファイルを開く方法は?
UTF-8対応のテキストエディターのファイルを開く操作から.jsonlを選びます。各行が独立したJSON値です。データを処理する場合は行単位で読むJSONパーサーを使ってください。単一のJSON文書を想定するパーサーでは複数レコードがエラーになることがあります。
MacでJSONLファイルを開く方法は?
UTF-8対応のエディターを標準テキストのモードで使います。各レコードは1行に収めます。ターミナルではUnixのテキスト処理ツールやシェルのパイプで行を扱えますが、JSONとしての解析は各行に対して個別に行います。
スマートフォンでNDJSONファイルを開く方法は?
スマートフォン内の対象ファイルにアクセスでき、UTF-8を読めるテキストエディターを選び、そのアプリから.ndjsonを開きます。ファイルへのアクセス方法と扱えるサイズはアプリによって異なり、すべてのモバイルエディターでの対応は保証されません。
NDJSONの空行による解析エラーはなぜ起きますか?
JSON Linesは空行を認めません。NDJSONパーサーは動作を文書化したうえで空行を無視でき、その設定を利用者が変更できるようにすることが推奨されるため、ツールによって結果が異なります。未完成のJSONや複数行に分かれたレコードも確認してください。
複数レコードにはJSON Linesと通常のJSONをどう使い分けますか?
レコードを行単位で読み取り、個別に処理するならJSON Linesが適しています。受け取り側が単一のJSON文書を求めるなら、通常のJSON配列を使います。複数のJSON値を改行で並べても、単一の有効なJSON文書にはなりません。
JSONLをJSON配列に変換する方法は?
各行をJSON値として解析し、順序を保って1つの配列内へカンマ区切りで出力します。これは形式の構造に基づく変換方法です。.jsonlを.jsonへ変更するだけでは、複数レコードをJSON配列に変換できません。
JSONLからCSVへの変換で失われるデータは何を確認すべきですか?
入れ子のオブジェクト、配列、フィールドが異なるレコードをCSVの列へどう対応させるか確認します。重複キーと大きな整数・高精度小数も要確認です。解析時に最後の重複値だけが残ったり、ツールの精度を超える数値が変化したりする場合があります。
JSONLファイルの解析に伴う安全上のリスクはありますか?
正しいJSON構文には代入や関数呼び出しがありません。ただし、信頼できないテキストにevalなどを使うとコード実行のリスクが生じます。JSONパーサーを使ってください。解析に成功しても、内容が信頼できるとは限りません。
JSON Linesの文字化けやUTF-8エラーを直すには?
元の文字コードを確認し、正しくデコードしたコピーをBOMなしのUTF-8で保存します。JSON Linesではこの文字コードが必要です。以前の読み込みで文字が置換されている場合、文字コードの指定を変えるだけでは元の文字を復元できません。
JSONLファイルのサイズや入れ子の深さに制限はありますか?
参照仕様には、すべての閲覧ツールに共通する上限は示されていません。パーサーはテキストサイズ、入れ子の深さ、文字列長を制限できます。対になっていないUnicodeサロゲートは、予測できない動作や実行時エラーの原因にもなります。
関連する形式
参考資料
JSON Lines — 官方格式文档 · JSON Lines 格式项目,维护者 Ian Ward
NDJSON — Newline delimited JSON Specification · NDJSON 官方规范仓库
RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format · IETF Standards Track / RFC Editor