ログやデータセットでは、.jsonlや.ndjsonのように1行ずつ独立したJSONを並べる形式が使われることがあります。テキストエディターでも開けますが、数万行以上になると、壊れた1行や型の混在を目視で探すのは大変です。
Browser KittyのJSONL Viewerは、JSONL / NDJSONをブラウザ内で行単位に走査し、不正JSON・空行、トップレベルフィールドの出現率、観測されたJSON型、レコード内容を確認できます。
JSONL / NDJSONは1行ごとに独立したJSON
通常のJSON配列はファイル全体が1つのJSON値ですが、JSONL / NDJSONは各行が独立したJSONです。たとえば1行目と2行目がそれぞれ正しいJSONでも、ファイル全体を単一JSONとして解析すると失敗することがあります。
JSONL Viewerは.jsonl / .ndjson / .jsonl.txt / .ndjson.txtを行単位で読み取り、正常行と要確認行を分けて表示します。
- 1行 = 1つのJSONレコード
- JSONLとNDJSONは同じViewerで確認
- 通常のJSON配列とは解析方法が異なる
不正JSONや空行を最初に探す
大きなJSONLでは、10万行のうち1行だけ閉じ括弧が欠けている、といった問題が起こります。JSONL Viewerは全体走査後に総行数・正常行・要確認行を表示し、不正JSONや空行を問題として確認できます。
問題行があっても正常なレコードは引き続き閲覧できます。1行のエラーでファイル全体を読めなくするのではなく、問題箇所を切り分けて調査できます。
- 総行数と要確認行数を先に見る
- 不正JSONの行へ移動する
- 空行も意図したものか確認する
フィールドの出現率で欠落を確認する
JSONLでは、すべてのレコードが同じトップレベルフィールドを持つとは限りません。JSONL Viewerは検出したトップレベルフィールドと出現率をまとめるため、必須だと思っていた項目が一部のレコードに存在しない、といった状態を見つけやすくなります。
フィールド自体が存在しない状態と、フィールドは存在して値がnullの状態は別です。出現率と観測型を分けて確認します。
同じフィールドの型混在を確認する
各行が構文的に正しいJSONでも、同じフィールドにnumberとstringが混ざっていると後続処理で問題になることがあります。たとえばpriceが通常は1200のような数値なのに、一部だけ"unknown"という文字列になっているケースです。
JSONL Viewerではトップレベルフィールドについて観測されたJSON型を確認できます。number / string / null、boolean / stringなどの混在を見つけたら、それが意図したデータ設計か確認します。
- numberとstringの混在
- nullを欠損値として使っているか
- trueと"true"を区別する
Table / Record / Cell Inspectorを使い分ける
複数レコードを横並びで比較するときはTable表示、ネストしたオブジェクトや配列を1件ずつ読むときはRecord表示が向いています。長い文字列やセル内で見切れる値はCell Inspectorで全体を確認します。
JSONLの内容を最初から1行ずつ読むのではなく、全体の問題数、フィールド構成、型を確認してから個別レコードへ進むと調査範囲を絞りやすくなります。
大きなファイルは全レコードを保持せずに走査する
JSONL Viewerの全体走査は、単一HTMLに埋め込まれたコードから生成するBlob Workerで行います。初回走査ではすべての解析済みレコードを保持するのではなく、疎なチェックポイントを持ち、ページ移動時に必要な範囲を再読み込みします。
これにより巨大な表を最初からDOMへ並べる方式を避けています。ただし、扱えるファイルサイズは端末メモリ、ブラウザ、ストレージ速度などにも影響されます。
現在ページをJSONL / CSVで取り出す
正常な現在ページのレコードはJSONLとしてコピーできます。また、現在ページをCSVとしてコピーまたは保存できるため、確認した一部だけを表計算ソフトへ渡す用途にも使えます。
これはファイル全体を自動修復したり、全件を一括CSV変換したりする機能ではありません。ネストしたJSONをCSVへ変換する場合も、JSONLとCSVでは表現できる構造が異なる点に注意が必要です。
- 正常な現在ページをJSONLでコピー
- 現在ページをCSVでコピー / 保存
- 全件変換や元ファイル修復ではない
できないこととローカル処理の範囲を確認する
v1.0.0では.jsonl.gz / .ndjson.gz、元ファイルの編集・自動修復、JSON Schema検証、JSONPath、jq相当のクエリには対応していません。ソートも現在ページが対象で、ファイル全体の並べ替えではありません。フィールド統計はトップレベルを対象とします。
選択したファイルはブラウザのFile APIで読み取り、全体走査も端末内のBlob Workerで行います。生成HTMLはconnect-src 'none'を含み、Analytics、Telemetry、外部API、実行時CDNを必要としません。Web版では最初のHTML取得通信だけ発生します。
手順
- .jsonl / .ndjson / .jsonl.txt / .ndjson.txtをJSONL Viewerへ追加します。複数ファイルも同時に開けます。
- 解析後に総行数・正常行・要確認行を確認し、まず問題の規模を把握します。
- 要確認行がある場合は問題一覧から該当ページへ移動し、不正JSONや空行を確認します。
- 検出されたトップレベルフィールドと出現率を見て、欠けている項目がないか確認します。
- 各フィールドで観測されたJSON型を確認し、number / string / nullなどの混在が意図したものか判断します。
- Tableで複数レコードを比較し、ネストしたデータはRecord表示、長い値はCell Inspectorで確認します。
- 必要に応じてページを移動し、表示中のページ内でソートして値を確認します。
- 必要な正常行をJSONLとしてコピーするか、現在ページをCSVとしてコピー / 保存します。
- 問題を修正する場合はViewerではなく元データ生成処理や別の編集手段で直し、修正版をもう一度開いて確認します。
JSONL Viewer
JSONL / NDJSONを端末内で走査し、不正行・フィールド出現率・型の混在・レコードを確認します。
注意点
- 1行だけ壊れていても残りのJSONLは正常な場合があります。ファイル全体を開ける / 開けないだけで判断しないでください。
- フィールドが存在しない状態と、値がnullの状態は別なので、出現率と型を分けて見ます。
- numberとstring、booleanと文字列など、見た目が似ていてもJSON型が違う値に注意してください。
- 大きなファイルでは端末性能の影響を受けるため、処理中に他の重いタブを閉じると安定する場合があります。
- Viewerは自動修復をしません。問題行の意味を確認してから元データ側を直す方が安全です。
よくある質問
JSONLファイルは普通のテキストエディターでも開けますか?
開けます。JSONLはテキスト形式です。ただし大きなファイルで不正行、フィールド出現率、型の混在を調べる場合は、JSONL向けViewerの方が確認しやすくなります。
JSONLとNDJSONは両方開けますか?
はい。.jsonl、.ndjson、.jsonl.txt、.ndjson.txtに対応しています。
壊れたJSONが1行あるとファイル全体を見られませんか?
いいえ。不正JSONや空行は要確認として分離し、正常なレコードは引き続き確認できます。
JSONLの型が混在しているか確認できますか?
トップレベルフィールドについて観測されたJSON型を確認できます。number / string / nullなどの混在を把握できます。
JSONLをCSVへ変換できますか?
現在表示しているページをCSVとしてコピーまたは保存できます。ファイル全体を一括CSV変換する機能ではありません。
.jsonl.gzや.ndjson.gzを開けますか?
v1.0.0では対応していません。先にgzipを展開して.jsonlまたは.ndjsonとして開いてください。
不正なJSONを自動修復できますか?
できません。問題行は確認できますが、元JSONL / NDJSONを編集・修復する機能はありません。
JSON Schemaやjqで検証・検索できますか?
v1.0.0ではJSON Schema検証、JSONPath、jq相当のクエリは対象外です。構文上の問題、トップレベルフィールド、観測型などの確認を中心にしています。
JSONLファイルはBrowser Kittyのサーバーへアップロードされますか?
いいえ。選択したファイルはブラウザのFile APIで読み取り、全体走査も端末内のBlob Workerで実行します。Browser Kittyのバックエンドへアップロードして解析する方式ではありません。