JSONL 格式化

在這裡貼上 JSONL 或 NDJSON,空列會自動忽略,每筆資料列都必須是一個完整的 JSON 物件。

格式化結果會顯示在這裡。

每一條非空列都應該是一段完整的 JSON 物件。

總列數: 1非空列: 0合法列: 0非法列: 0
貼上 JSONL 後就會立即開始格式化。

一個面向日誌、工作階段封存與串流匯出的輕量 JSONL 格式化頁面。左側貼上換行分隔的 JSON 物件,右側立即預覽每條紀錄的格式化結果,並直接看到哪一行壞了。

相關推薦

什麼是 JSONL 格式化?

JSONL(JSON Lines)是一種逐行組織 JSON 紀錄的文字格式。它的核心特點不是「長得像 JSON」,而是「每一條紀錄獨立占一行」。在實際工程裡,這幾乎總是表現為「每一非空白行都是一個完整 JSON 物件」,物件之間以換行字元分隔,而不是再額外包一層 `[{...},{...}]` 的大陣列。

這種組織方式特別適合日誌、事件串流、工作階段封存、批次匯出與串流處理。因為程式不需要先把整個檔案讀進記憶體,只要逐行讀取就能逐條消費紀錄。某一行壞了,也能直接定位到對應行號,而不是在一個超長 JSON 陣列裡盲目數括號、找逗號。

JSONL 格式化和普通 JSON 格式化不是一回事。普通 JSON 格式化器假設輸入是一整份完整 JSON 文件;JSONL 格式化器則必須逐行剖析、逐行驗證、逐行回報錯誤,還要保留換行分隔的紀錄語意。對日誌與匯出檔案來說,這種差異非常關鍵。

這個頁面就是圍繞這種真實語意設計的:左側輸入換行分隔的物件紀錄,右側依紀錄展示格式化結果,同時把壞行、截斷行與非物件行直接指出來。這樣你在排查 `.jsonl` 檔案時看到的是「哪條紀錄有問題」,而不是籠統地得到一個 `SyntaxError`。

適用場景

  • 把應用日誌匯出的 JSONL 逐條美化後再逐欄位排查問題,而不是盯著一長串壓成一行的物件發呆
  • 檢查工作階段封存檔案(每一行都是一個事件物件),確認每一條事件物件都完整可讀
  • 在資料管線、追蹤平台或 Elasticsearch bulk 匯出失敗時,快速定位到底是哪一行 JSON 物件寫壞了
  • 偵錯串流輸出介面時,確認伺服器端是否真的依「每行一個物件」持續產出,而不是把半截物件提前刷出
  • 把終端機、監控面板或雲端日誌平台複製出來的 NDJSON 貼進來,先整理結構再繼續排查
  • 檢查 AI 產生的逐行物件結果是否某一行混入了陣列、字串或不完整 JSON
  • 在匯入 ClickHouse、BigQuery、Kafka Connect 等依賴行級紀錄的流程前,先人工複核 JSONL 內容
  • 審查稽核日誌、風控事件或追蹤事件串流時,逐條看物件結構是否穩定一致
  • 當 JSONL 檔案被截斷或下載不完整時,快速看到最後哪一條物件沒有閉合
  • 把內部工具匯出的 line-delimited JSON 先格式化,再傳給同事做程式碼審查或資料核對
  • 在寫腳本剖析 JSONL 之前,先人工確認欄位層級、巢狀物件與陣列位置,減少腳本偵錯時間
  • 處理混雜空白行與壞行的歷史匯出檔案時,先過濾結構問題再決定是否繼續轉換成 CSV 或資料庫匯入

使用方法

  1. 把 JSONL 或 NDJSON 內容貼到輸入區,保證每一條非空白行都是一個獨立 JSON 物件
  2. 右側會立即逐行格式化,並在壞行處提示具體行號、錯誤訊息與原始紀錄
  3. 依提示修復對應行,直到不合法行數量歸零
  4. 確認全部合法後,再複製完整的格式化結果,或繼續把資料送去下游腳本、匯入器與分析流程

功能特點

  • 逐行剖析 JSONL / NDJSON,不需要先手動包成 `[{...},{...}]` 這種完整 JSON 陣列
  • 依「每一非空白行都是一個 JSON 物件」的真實檔案語意驗證,貼合日誌、事件串流、工作階段封存等常見資料形態
  • 左右分欄版面:左側 `textarea` 輸入,右側即時展示格式化結果,適合邊修邊看
  • 壞行會直接標出具體行號、剖析錯誤與原始內容,方便快速修復截斷紀錄、缺少括號與拼接錯誤
  • 只在全部非空白行都合法時開放複製,避免把部分成功、部分損壞的資料繼續傳給下游流程
  • 內建總行數、非空白行、合法行、不合法行統計,適合快速判斷大檔案到底壞了幾條紀錄
  • 提供範例資料,首次開啟就能直接試用 JSONL 格式化效果
  • 全部處理都在瀏覽器本機完成,日誌、工作階段事件與介面匯出內容不會上傳

JSONL 格式化 vs JSON 格式化 vs JSON 修復

這幾個工具經常連著用,但解決的問題並不一樣。選對入口會快很多。

工具最適合的輸入核心能力適用場景
JSONL 格式化每行一個 JSON 物件依紀錄逐行驗證與美化日誌、NDJSON、工作階段封存、串流匯出
JSON 格式化一個完整 JSON 物件或陣列美化整份 JSON 文件API 回應、設定檔、單次 payload
JSON 修復有語法錯誤或不標準的 JSON 文字先修語法再交給後續工具尾逗號、註解、引號問題、截斷 JSON

最佳实践

偵錯時盡量保持原始 JSONL 形態,不要為了看懂先手動包成陣列

如果下游系統原本吃的是 JSONL,就盡量在原始「每行一條紀錄」的形態下排查。先包成陣列雖然能丟給普通 JSON 格式化器,但會丟失原始行號語意,也更難對應真實壞行位置。

大檔案優先看最後幾行

很多 JSONL 檔案不是中間結構錯,而是最後幾行因為串流中斷、下載失敗或寫入未完成而被截斷。先看尾部幾條紀錄,通常比從頭翻完整檔案更快。

如果輸入本身帶單引號、註解或 JSON5 風格,先走 JSON 修復更省時間

JSONL 格式化頁強調的是逐行物件驗證;如果來源資料先天就不是標準 JSON,先修再格式化通常比在長檔案裡人工逐行改更有效率。

準備重新匯入時,務必保留一行一個物件的傳輸語意

右側的多行美化區塊更適合人看,但如果你接下來要把資料重新寫回日誌系統、訊息佇列或匯入器,記得保留來源資料的一行一物件結構,而不是把預覽形態直接當最終傳輸格式。

把行號當做主線索,而不是全檔案肉眼通讀

真正排查時,最快的方法通常是先鎖定壞行號,再把這一條和前後相鄰合法紀錄對比。這樣能更快看出是缺括號、缺引號、欄位被截斷,還是某個物件混進了錯誤型別。

常見問題

JSON 和 JSONL 有什麼差別?

普通 JSON 通常是一整個物件或陣列,要做為一份完整文件整體剖析;JSONL(JSON Lines,也常叫 NDJSON)則是一行一條獨立紀錄,工程實務裡最常見的是「一行一個 JSON 物件」。它更適合日誌、事件串流、串流處理與批次匯入,因為可以逐行讀取、逐行寫入、逐行定位錯誤。

這個頁面為什麼強調「每行一個 JSON 物件」?

因為真實世界裡大多數 JSONL 檔案就是這麼組織的,尤其是日誌、工作階段封存、事件串流與匯出檔案。典型的封存樣本也是如此:每一行都是一個物件,以換行字元分隔。頁面依這個語意驗證,比寬鬆接受任意 JSON 值更符合實際偵錯場景。

JSONL 和 `[{...},{...}]` 這種 JSON 陣列有什麼不同?

JSON 陣列是一份完整 JSON 文件,必須整體讀完再剖析;JSONL 則把每條物件拆成獨立的行紀錄,可以串流讀取,也更容易在某一條出錯時直接定位到對應行。對於大日誌檔案與事件串流來說,JSONL 比整包陣列更適合處理。

空白行為什麼會被忽略?

空白行通常來自複製貼上、日誌輪轉或人工編輯,不代表真正的資料紀錄。忽略空白行可以減少雜訊,同時仍然嚴格檢查所有包含內容的資料行。

如果某一行是陣列、字串或 `null` 會怎樣?

這個頁面會把它判定為不合法行,因為這裡的目標格式是「每一非空白行都是一個 JSON 物件」。如果你的資料確實需要逐行儲存陣列或原始值,那代表它不是這個頁面目前最佳化的典型 JSONL 日誌場景。

為什麼有一條壞行時不能直接複製全部結果?

這是刻意保持保守的互動。只有當全部非空白行都合法時才允許複製,避免把部分成功、部分損壞的結果繼續傳給下游匯入器、腳本或同事,省掉二次排查成本。

它能幫我發現被截斷的日誌檔案嗎?

可以。很多 JSONL 問題都發生在最後幾行,比如物件少了 `}`、字串少了結束引號、網路串流中途斷掉。頁面會把對應壞行直接暴露出來,尤其適合排查下載不完整與串流輸出中斷。

JSONL 和 NDJSON 是一回事嗎?

在絕大多數工程語境裡可以當成同義詞。兩者都表示以換行分隔的 JSON 紀錄,只是命名習慣不同。

格式化 JSONL 時會上傳我的資料嗎?

不會。所有剖析、驗證與格式化都只在瀏覽器本機執行,日誌、介面回傳、工作階段封存與資料匯出內容都不會傳到伺服器。

什麼時候該用普通 JSON 格式化,而不是 JSONL 格式化?

如果你的輸入本身是一個完整 JSON 物件或一個陣列,比如 API 回應內容、設定檔、`[{...},{...}]` 這種資料包,就該用普通 JSON 格式化頁;只有在輸入是依換行拆開的逐條物件紀錄時,才更適合這個 JSONL 格式化頁。

術語表

JSONL
一種逐行分隔 JSON 紀錄的文字格式。最常見的工程寫法是每一條非空白行都是一個完整 JSON 物件。
JSON Lines
JSONL 的全稱與另一種常見叫法,通常與 JSONL 視為同義。
NDJSON
Newline Delimited JSON,直譯為「換行分隔的 JSON」。在大多數日誌與資料管線場景中與 JSONL 基本等價。
逐行紀錄
每一行都代表一條完整紀錄的資料布局,適合串流寫入、串流讀取與逐行定位錯誤。
Pretty Print / 美化格式化
把壓縮的一行 JSON 重新排成帶縮排與換行的可讀結構,方便人工查看欄位層級。
壞行
某一行不是合法 JSON,或雖然能剖析但不符合預期結構(例如不是物件),因此不能做為有效 JSONL 紀錄。
截斷串流
日誌或匯出在傳輸、重新整理或儲存過程中被中途截斷,導致最後一條紀錄沒有完整閉合。
JSON 陣列
標準 JSON 中用 `[` 和 `]` 包起來的一整個集合,例如 `[{...},{...}]`。它與 JSONL 不同,必須做為一份整體文件來剖析。

Authoritative References