JSON 工具箱

Schema 與校驗

用 JSON Schema 描述資料形狀,把「口頭約定」變成可執行校驗,並進一步驅動 TypeScript 型別與表單生成。

7 篇文章

本分類文章

JSON Schema 從入門到工程化

關鍵字很多,真正天天用的只有十幾個。把 type/properties/required/$ref 用對,再處理好錯誤資訊,就能覆蓋八成場景。

進階約 14 分鐘更新於 2026-10-30

Schema 與 TypeScript 型別雙向同步

型別和 schema 各管一段:一個在編譯期,一個在執行時。問題不是選哪個,而是如何讓兩者自動保持一致。

進階約 11 分鐘更新於 2026-10-30

自動生成的 JSON Schema 為什麼總在拒絕真實資料

把示例 JSON 丟進生成器,得到的 schema 往往一上線就攔掉正常資料。本文用五條同形狀記錄做對照實測,說明「樣本越全反而越糟」的原因,並給出多條取樣、語義補全、錯誤定位的完整落地流程。

進階約 14 分鐘更新於 2026-10-30

JSON Schema 複用:$ref、$defs 與 allOf/oneOf 組合

$ref 解決複用,allOf/oneOf 解決組合,兩者疊在一起最容易出事。本文按解析順序講清 $id、$defs、條件分支、迴圈引用與打包,並給出可重現的除錯路徑。

進階約 11 分鐘更新於 2026-10-31

JSON Schema 報錯看不懂:Ajv 錯誤定位與錯誤資訊治理

校驗器給出的是一串機器錯誤,使用者需要的是「哪個輸入框錯了」。本文拆解 Ajv 的 errors 陣列,講清 instancePath 與 schemaPath 的差別,並給出歸類、自訂文案、國際化與前端呈現的完整方案。

實戰約 10 分鐘更新於 2026-10-31

additionalProperties 不關,Schema 校驗等於沒校驗

校驗通過不代表資料乾淨。Pydantic 預設忽略未知欄位,Zod 預設剝離,Ajv 預設放行——模型編造的參數、拼錯的鍵都會靜默穿過。本文用實測說明靜默放行的三種形態,並給出關閉物件、控制強轉、逐層收口的完整寫法。

進階約 8 分鐘更新於 2026-11-02

JSON Schema 契約測試:把校驗規則焊進 CI

schema 寫完不改就是壞的起點:一個 typo 讓校驗器靜默放行,一次重構讓 fixture 全線誤報。本文給出一套可落地的契約測試方案——正例、負例、快照三件套,schema 本身先進 lint,編譯一次複用,再把四道閘門焊進 CI,讓契約壞了構建先紅。

實戰約 8 分鐘更新於 2026-11-05