JSON 扁平化轉 JSONL

擷取並扁平化巢狀 JSON 物件和陣列為 JSONL(JSON Lines)格式。每筆記錄成為獨立的一行。100% 在用戶端處理。

輸入 JSON

將 .json 檔案拖放到這裡,或點擊瀏覽

支援 .json、.txt

作者: Jerry Fan更新於 2026年2月

什麼是 JSON 扁平化?

JSON 扁平化是將深度巢狀的 JSON 結構轉換為扁平的逐行格式的過程。巢狀物件鍵值會轉換為點號表示法(例如 address.city),物件陣列會展開,使每個元素成為 JSONL 格式中的獨立記錄。

當您有來自 API 回應或資料庫匯出的複雜巢狀結構,需要將它們轉換為扁平的表格格式以用於機器學習訓練、CSV 轉換,或期望每行一筆記錄的串流資料管線時,這特別有用。

攤平陣列的兩種方式 — 依目的地選擇

巢狀物件的攤平方式很直觀(用點連接鍵名),但陣列就得做真正的抉擇。正確的策略取決於攤平後的資料要送去哪裡:

策略[{"sku":"A"},{"sku":"B"}] 會變成適用時機
索引展開items.0.sku = A、items.1.sku = B — 一列,更多欄列數必須與輸入完全一致;陣列短且長度有上限
展開成多列兩列,各含 items.sku — 更多列,欄位穩定餵給 SQL 或分析系統,且每個陣列元素其實就是一筆獨立記錄
保留為 JSON 字串items = "[{\"sku\":\"A\"},...]" — 一個不透明的儲存格陣列是之後才會重新解析的中繼資料,不是現在要查詢的資料

如何將 JSON 扁平化為 JSONL

將 JSON 扁平化為 JSONL 會從巢狀結構中擷取記錄,並將每筆記錄轉換為獨立的 JSONL 行。如果您的 JSON 包含物件陣列,每個陣列元素會成為一行。巢狀物件鍵值會扁平化為點號表示法。

我們的工具完全在您的瀏覽器中運作。不會將任何資料傳送到任何伺服器。貼上您的巢狀 JSON 或拖放檔案,扁平化的 JSONL 輸出會立即出現。父層級欄位會自動合併到每筆記錄中。

輸出為有效的 JSONL,每行一個緊湊的 JSON 物件。您可以將結果複製到剪貼簿,或下載為 .jsonl 檔案,準備用於機器學習、資料管線或資料庫匯入。

攤平前後對照

一筆真實的巢狀記錄與其索引展開後的扁平形式。注意分隔符的選擇很重要:使用點的話,來源中像 "config.debug" 這樣本身含點的鍵,會與攤平後的路徑 config.debug 衝突 — 如果你的鍵含有點,請把分隔符改成底線:

// Before — nested record:
{"user": {"id": 7, "address": {"city": "Osaka", "zip": "530-0001"}}, "tags": ["vip", "beta"]}
// After — flattened with dot separator, arrays index-expanded:
{"user.id": 7, "user.address.city": "Osaka", "user.address.zip": "530-0001", "tags.0": "vip", "tags.1": "beta"}

攤平是匯出成 CSV 或 Excel 前的標準前處理步驟 — 這些格式是表格式的,無法表示巢狀結構。巢狀很深的輸入可能產生非常寬的輸出,所以請先攤平一份樣本、確認欄位數量合理,再處理完整檔案。

常見使用情境

API 回應處理

將巢狀 API 回應扁平化為 JSONL,以便在資料管線中更輕鬆地解析、記錄和下游處理。

ETL 資料轉換

從複雜的 JSON 匯出中擷取記錄,並將它們扁平化為 JSONL,以載入到資料庫或資料倉儲。

機器學習資料集準備

將巢狀 JSON 資料集轉換為 OpenAI、Hugging Face 和其他機器學習訓練平台所需的扁平 JSONL 記錄。

日誌與分析處理

將帶有巢狀中繼資料的結構化日誌檔案扁平化為 JSONL,以使用 grep、jq 或 Elasticsearch 等工具進行分析。

測試資料生成

將複雜的 JSON API 模擬回應扁平化為個別的 JSONL 記錄,作為自動化測試套件中的測試資料使用。

資料庫遷移

將 MongoDB 或 CouchDB 匯出的巢狀文件式 JSON 扁平化為扁平的 JSONL 記錄,以匯入 PostgreSQL 等關聯式資料庫。

常見錯誤與解決方案

找不到要扁平化的記錄

當輸入的 JSON 是基本值(字串、數字)或空物件/陣列時會出現此錯誤。工具需要物件或物件陣列來擷取記錄。請確保您的 JSON 至少包含一個具有鍵值對的物件。

點號表示法鍵值衝突

如果您的 JSON 在頂層有像 "user.name" 這樣的鍵值,同時又有巢狀的 {"user":{"name":"value"}'},兩者會扁平化為相同的點號表示法鍵值。巢狀值會覆蓋頂層值。請在扁平化前重新命名衝突的鍵值。

JSON 中的循環參考

雖然標準 JSON 不能包含循環參考,但某些 JSON 生成器可能會產生非常深度巢狀的結構。工具可以處理合理深度的巢狀,但如果結構超出安全限制,將停止扁平化。

常見問題

這個 JSON 扁平化工具有什麼功能?

巢狀物件鍵值會轉換為點號表示法。例如,{"user":{"address":{"city":"NYC"}'}'} 會變成 {"user.address.city":"NYC"}。這使得深度巢狀的資料可以作為扁平的鍵值對存取。

可以將深度巢狀的 JSON 扁平化為 JSONL 嗎?

如果 JSON 包含物件陣列,每個物件會成為獨立的 JSONL 行。基本類型陣列(字串、數字)會在扁平化輸出中序列化為 JSON 字串。工具會自動偵測要展開的主陣列。

這個工具會上傳我的 JSON 檔案嗎?

是的。所有扁平化都在您的瀏覽器本機進行。不會將任何資料傳送到任何伺服器。您的 JSON 內容永遠不會離開您的裝置。

如何選擇要扁平化的陣列?

可以。工具可以處理任何層級的巢狀。頂層純量欄位會合併到每筆記錄中,巢狀物件使用點號表示法,最大的物件陣列會展開為獨立的 JSONL 行。

純量(非物件)陣列項目會怎樣?

null 值會在扁平化輸出中保留為 null。JSON 沒有 undefined 類型,因此您不會遇到 undefined 值。空物件扁平化後不會產生任何鍵值,空陣列則序列化為空的 JSON 陣列。

如何將結果轉回 JSON?

目前工具一次處理一個 JSON 輸入。如需扁平化多個檔案,請逐一處理。對於批次操作,可以考慮搭配使用 jq 等命令列工具,再用本工具進行視覺化驗證。

可以扁平化包含混合陣列和物件的 JSON 嗎?

工具支援真實世界 JSON 資料中常見的巢狀深度(通常超過 20 層)。沒有硬性的深度限制,但極深的巢狀可能會在輸出中產生非常長的點號表示法鍵值。

這個工具可以處理的最大檔案是多大?

JSON 轉 JSONL 僅將頂層陣列的每個元素放在單獨的一行上。JSON 扁平化轉 JSONL 則更進一步,會展開巢狀結構、將巢狀鍵值轉換為點號表示法,並將父層級欄位合併到每筆記錄中。當您需要從深度巢狀的 JSON 中擷取記錄時,請使用扁平化功能。

相關工具與指南