這是什麼
JSON Lines(也稱 JSONL 或 NDJSON)每行存放一個 JSON 值。它是日誌、資料匯出、串流 API、BigQuery 與 Elasticsearch 大量匯入,以及機器學習資料集(例如 OpenAI 微調檔案)的常用格式,因為程式可以一次讀取或附加一筆記錄,而不必載入整個檔案。
但許多工具只接受單一 JSON 陣列。這個工具把 JSON Lines 轉成排版好的 JSON 陣列,也能把 JSON 陣列轉回 JSON Lines,每行一筆精簡的記錄。
怎麼用
- 選擇 方向:JSON Lines → JSON,或 JSON → JSON Lines。
- 貼上資料,或上傳
.jsonl、.ndjson、.json檔案,也可以按 範例。 - 輸出 JSON 時,可選 2 或 4 個空格縮排,或選 壓縮 輸出成一行。
- 複製或下載結果,或用 作為輸入 再轉換回去。
如果某一行不是合法的 JSON,錯誤訊息會提供行號與欄號,讓你直接找到出錯的記錄——當日誌檔裡數千筆記錄中有一筆被截斷時特別好用。
範例
下面這三行 JSON Lines:
{"id": 1, "event": "signup"}
{"id": 2, "event": "login"}
{"id": 3, "event": "logout"}
會變成這個 JSON 陣列:
[
{
"id": 1,
"event": "signup"
},
{
"id": 2,
"event": "login"
},
{
"id": 3,
"event": "logout"
}
]
反向轉換時,陣列的每個元素寫成一行、不含空格,檔案以換行結尾。
什麼時候用哪一種
記錄是一筆筆產生或使用時,用 JSON Lines:附加日誌、串流回傳結果、把大型資料集分給多個工作程序,或用 grep、head、wc -l 這類逐行處理的工具。程式需要一次取得整個集合時,用 JSON 陣列,例如設定檔、測試資料或 REST 端點的回應內容。
常見問題
› JSONL、NDJSON 和 JSON Lines 有什麼不同?
它們是同一種格式的不同名稱:每行一個完整的 JSON 值,以換行字元分隔。JSON Lines(.jsonl)與換行分隔 JSON(.ndjson)只差在名稱和副檔名。
› 可以有空行嗎?
讀取時會略過空行和結尾的換行。Windows 換行(CRLF)和 UTF-8 BOM 也能正確處理。
› 我的檔案是排版過的 JSON,一個物件跨好幾行,為什麼會出錯?
JSON Lines 要求每個值都寫在同一行。如果輸入是一般的 JSON 陣列,請把方向切換為 JSON → JSON Lines;如果是一連串排版過的物件,請先把它們放進一個陣列。
› 轉換會改變數字或鍵的順序嗎?
不會。值和鍵的順序都保持不變,只有空白會改變。超出 JavaScript 安全整數範圍(約 9 千兆)的極大整數可能失去精度,所有在瀏覽器中執行的 JSON 工具都一樣。