FORMAT COMPARISON
JSON Lines vs JSON
JSON Lines(newline-delimited JSON)はUTF-8テキストで、各行に独立した有効なJSON値を1つ置くレコード指向の慣習です。通常のJSONは1つのJSONテキストとして値全体を表すため、JSON Linesは複数レコードの逐次処理や追記に向きます。
JSON LinesとJSON、どちらを選ぶ?
ログやイベントを1行ずつ処理・追加し、パイプで流したい場合はJSON Linesを検討します。単一の設定文書やネストした配列・オブジェクト全体を扱う場合は通常のJSONを使います。受信側がJSON Linesを理解するか、レコード区切り・空行・最後の改行をどう扱うか確認してください。
JSON Lines向き
行単位で処理するログや記録・JSONレコードのストリーミング交換
- データを1行ずつ読み書きする
- テキスト処理ツールで追記・連結する
JSON向き
Web API・設定ファイル・データ交換
- 構造化データの受け渡し
基本情報を比較
JSON LinesとJSONの主な違いを確認できます。
| 項目 | JSON Lines | JSON |
|---|---|---|
| 拡張子 | .jsonl、.ndjson | .json |
| MIME Type | application/jsonl | application/json |
| 主な用途 | 行単位で処理するログや記録・JSONレコードのストリーミング交換 | Web API・設定ファイル・データ交換 |
| 圧縮 | none | 該当なし |
| 開く方法 | テキストエディタやJSON Lines対応ツールで開きます。1行ずつJSONとして検証すると、どのレコードに構文エラーがあるか確認しやすくなります。 | テキストエディタ、IDE、JSON対応ビューアで開けます。 |
| 書き出し・変換 | JSON配列へ変換するときは全行を配列要素にまとめ、JSON Linesへ戻すときは各要素を1行ずつ書き出します。大量データではメモリ使用量に注意します。 | アプリケーションや変換ツールでCSVなどへ変換できます。 |
用途別の選び方
作りたいものや使う場面から選べます。
データを1行ずつ読み書きする
行単位で処理するログや記録・JSONレコードのストリーミング交換
JSON Lines向きテキスト処理ツールで追記・連結する
行単位で処理するログや記録・JSONレコードのストリーミング交換
JSON Lines向き構造化データの受け渡し
Web API・設定ファイル・データ交換
JSON向き確認ポイント 1
JSON Linesでは各行が独立してパースできるJSON値です。オブジェクトが一般的ですが、文字列・数値・null等も許され、空行は有効なレコードではありません。通常のJSONテキストは全体で1値を表します。
使い分け確認ポイント 2
JSON LinesはUTF-8を使い、各値の間にLFを置きます。CRLFもJSONの空白規則により利用できます。最後の値の後の改行は推奨ですが必須ではなく、ファイル連結やストリーム処理で扱いを決める必要があります。
使い分け選ぶ理由を詳しく
- JSON Linesファイル全体は1つの標準JSON文書ではありません。通常のJSONパーサーへそのまま渡すと複数トップレベル値で失敗する場合があるため、行単位で読み込みます。変換時は順序、途中失敗からの復旧、空行・不正行、最終改行、JSON Lines MIME typeの未標準化を確認してください。