Metlivi 部落格

如何在不修改檔案的情況下離線讀取 Day One 的 JSON 匯出檔

若要檢視 Day One 匯出檔,請保持下載的 ZIP 檔原封不動,另存一份工作複本並在本地解壓縮,接著使用文字編輯器或 Python 的標準 JSON 工具開啟 `.json` 檔案。ZIP 是容器;JSON 是結構化文字;任何媒體資料夾則存放獨立檔案。您可以檢查 JSON 語法是否有效,並找出候選的文字、日期或附件數值,無須預先假設未記載的鍵(keys)代表什麼意思。單純能夠讀取 JSON,並不代表每個媒體檔案都齊全,也不代表該封存檔一定能成功還原。

2026年9月30日4 分鐘閱讀生活美學與自我表達作者:Metlivi Editorial Team
第 1 節

首先區分 ZIP、JSON 和媒體檔案

Day One 將其 JSON 匯出描述為包含特定篇章 `.json` 檔案的 ZIP 壓縮檔;媒體則可能包含在相片、影片、音訊和 PDF 的資料夾中。指南說明 JSON 是專供重新匯入封存資料使用,並可由 Day One 及支援 Day One JSON 格式的應用程式讀取。[Day One 匯出指南](https://dayoneapp.com/guides/tips-and-tutorials/exporting-entries/) 並未提供完整的逐欄位架構定義(schema),因此切勿將看似熟悉的檔名或鍵直接當作其意涵的依據。

請保持原始 ZIP 檔不變。使用作業系統的解壓縮工具將複本解壓縮至新的本地資料夾。避免將個人日記上傳到線上排版工具。在開啟或移動檔案之前,請先確認封存檔中包含一個 JSON 檔、多個檔案還是包含媒體資料夾;具體內容取決於匯出時的選項。將 `.zip` 當作 JSON 直接開啟會失敗,因為 ZIP 是完全不同的檔案格式。

第 2 節

在本地檢查 JSON 語法

JSON 文件是用來描述結構化數值的文字。頂層可能是物件(object)、陣列(array)或其他有效的 JSON 數值;JSON 物件包含具名的成員(members),而陣列則包含具順序的數值。字串使用雙引號,且逗號、冒號與括號都必須遵循 JSON 語法。[MDN 的 JSON 指南](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON) 詳細說明了這些結構與常見的語法限制。

若要進行快速的本地檢查並獲得易讀的縮排,Python 文件記載了以下命令列形式:

`python3 -m json.tool < journal.json`

請在命令中加入解壓縮檔案的路徑,且只有在想要一份獨立的美化排版(pretty-printed)複本時,才將輸出重新導向至新檔案。解析成功時,該命令會印出格式化後的 JSON;若解析失敗,Python 會回報錯誤發生的位置。成功解析僅代表該文字對解析器而言是有效的 JSON,並不代表檔案內容完整、其數值符合您的預期意義,或 Day One 一定能夠將其匯入。[Python 的 `json` 說明文件](https://docs.python.org/3/library/json.html) 也記錄了用於讀取檔案或字串的 `json.load()` 和 `json.loads()`。

第 3 節

找出文件的實際結構樣貌

從第一個非空白字元開始觀察。開頭為 `{` 代表物件;`[` 則代表陣列。在格式化複本中,展開最外層並檢視成員名稱與數值型別。陣列中可能包含物件;而這些物件又可能包含陣列或巢狀物件。重複出現的物件樣貌有助於找出候選的日記條目記錄,但光憑重複性並無法證實匯出工具預期的架構定義。

在文字中搜尋您已知日記中曾出現的字詞,接著檢視其周圍的括號與數值。請在筆記中精確記錄數值旁邊的鍵,切勿憑猜測重新命名。看似日期的數值可能是候選日期;看似路徑的字串可能是候選附件參照。在 Day One 官方文件或匯出檔本身的內文證實其意義之前,請將兩者皆視為未確認。在筆記中請務必保留原始的拼字、標點符號、跳脫序列及數值型別。

第 4 節

謹慎解讀跳脫字元與媒體參照

JSON 字串內部顯示的序列(如 `\\n`)代表跳脫換行符號;它在原始日記中不一定代表兩個字元。引號與反斜線也同樣會被跳脫。解析器可以將「Line one\nLine two」顯示為包含換行符號的字串,而 JSON 文字則是使用 `\\n` 來編碼該換行。請在閱讀器或解析器中比對數值,避免直接編輯原始檔案。

如果某個數值看似媒體檔名或相對路徑,請檢查解壓縮後的媒體資料夾中是否存在相符的檔案。將精確的參照與相符情況記錄為觀察結果,而非斷定該參照在 Day One 中必定能正確解析。找不到相符項目可能是出於匯出選項、命名差異,或單從該欄位無法確定的其他細節。請將任何盤點清單與原始匯出檔分開存放。

第 5 節

使用檢驗記錄表,而非猜測的欄位名稱

利用小型表格可以明確標註不確定性,並協助他人重複您的檢驗流程:

舉例來說,一般的 JSON 物件可能包含 `{\"text\":\"A note\",\"date\":\"2024-05-06\",\"attachment\":\"photos/example.jpg\"}`。這些純粹為說明用的名稱與數值,並非針對 Day One 架構定義的陳述。在筆記中請保留原始數值不變;避免轉換日期格式、憑空猜測路徑,或刪除不熟悉的成員。

容器內容:解壓縮後存在的檔名與資料夾
JSON 結構:觀察到的頂層型別與巢狀層次
候選數值:精確的鍵、數值型別與簡短摘要
可能意義:「候選文字/日期/附件」;標記為未驗證
相關媒體:精確路徑以及是否找到相符檔案
第 6 節

了解檢驗所無法確定的事項

語法有效並不代表匯出檔包含了所有選定的日記或預期的媒體檔案。看到候選附件數值並不代表所引用的檔案確實存在,找到檔名相似的檔案也不代表匯入行為符合預期。Day One 的指南將 JSON 定位為封存與重新匯入的格式,但唯讀檢視並不能取代還原測試。如果您需要確認可攜性或復原能力,請參閱最新的 Day One 說明,並在安全的複本上單獨執行任何匯入檢查,同時維持原始匯出檔完好無損。

相關閱讀

繼續探索這個主題