什麼是 JSON 模式產生器?
JSON 模式產生器讀取範例 JSON 值(API 回應、設定檔、Webhook 有效負載)並寫入驗證它的 JSON 模式。它推斷每個欄位的類型,將物件數組合併到單一項目模式而不是雜訊聯合中,從每個記錄中存在的鍵導出需要哪些鍵,並且可以標記字串格式,例如日期時間、電子郵件、uri 和 uuid。您貼上已有的資料;您將獲得原本逐條手寫的模式。
手寫模式速度很慢,很容易犯一些微妙的錯誤。很容易輸入您認為有效負載包含的內容,錯過嵌套字段,根據需要標記偶爾為空的屬性,或者忘記一個端點返回一個數組,而另一個端點返回單個對象。直接從真實資料產生的模式從實際形狀開始,因此您驗證的文件與服務真正發送的內容相符。從那裡您可以手動收緊約束 - 模式、枚舉、最小值,但乏味的鷹架已經完成。
一切都在您的瀏覽器中運行。推理引擎是無依賴性的 TypeScript,而不是託管 API 周圍的包裝器,因此有效負載(通常攜帶令牌、電子郵件和內部 ID)永遠不會離開頁面。選擇 Draft-07 或 2020-12 方言,新增標題,切換所需欄位偵測、格式偵測和嚴格的 `additionalProperties`,然後複製模式或將其下載為 。json 檔案。
模式描述的是您的樣本而不是您的意圖,因此將輸出視為初稿:從恰好存在的內容推斷出所需的字段,並通過模式檢測格式,因此看起來像日期的字串被鍵入為1,即使當它是一個僅類似於它的標識符時。
這是來自 JSON 的 JSON 模式產生器的工作範例,具有多個記錄。貼上[{"id":1,"email":"a@b。co","nick":"x"},{"id":2, "email":null}] 並按生成。輸出是一個數組模式,其項目具有整數 id、電子郵件為 ["string"、"null"] 和 nick 為字串,所需設定為 id 和 email,因為第二個記錄中缺少 nick。標頭讀取 3 個屬性,需要 2 個屬性,深度 2,219 位元組。這是任何 JSON 到 JSON 模式產生器的工作:您新增的每個記錄都可以加寬類型或從所需中刪除鍵。
如何使用 JSON 模式產生器?
貼上你的 json
刪除 API 回應、夾具或任何 JSON 值。 首先載入樣本以查看如何處理嵌套物件、物件數組和字串格式。
選擇方言
選擇最廣泛的工具支援 Draft-07 或目前規範的 2020-12。 正確的 $schema URI 會寫在輸出上。
設定您的選項
新增一個可選的標題,決定是否發出所需的數組,檢測字串格式,並使用附加屬性鎖定物件:FALSE 以進行嚴格驗證。
產生,然後複製或下載
按產生。 查看推斷的類型和所需欄位,然後將架構複製到您的剪貼簿或將其下載為 .json 檔案,以便放入您的驗證器。
主要特點
Draft-07 和 2020-12 輸出
發出廣泛支援的 Draft-07 方言或目前的 2020-12 規範。 匹配的 $schema 識別碼寫在根上,以便驗證器選擇正確的規則。
智慧型陣列合併
一組物件變成單一項目模式,描述一個元素,而不是一個蔓延的元素。 每個元素中都需要鍵;僅出現在某些元素中的鍵是可選的。
必填
生成器從它看到的每個物件中存在的鍵導出所需的數組,這正是真實分頁資料的行為方式 - 有些欄位始終存在,而有些欄位則不存在。
字串格式檢測
識別日期時間、日期、時間、電子郵件、URI、UUID 和 IPv4 字串,並使用適當的格式關鍵字標記它們,為您提供原本手動添加的驗證。
Frequently Asked Questions
Related Tools
JSON Flattener
Flatten nested JSON into single-level dot-notation keys, or unflatten dotted keys back into nested objects and arrays. Lossless round trip. 100% client-side.
JSON to Go Struct
Convert JSON into Go struct definitions with json tags. Nested objects become inline structs, arrays of objects are merged, and field names follow Go conventions. Runs client-side.
JSON to TypeScript
Generate TypeScript interfaces from any JSON sample. Infers nested types, merges arrays of objects into a single interface, marks nullable and missing keys optional, and emits clean exportable code. 100% client-side.
JSONPath Tester
Test JSONPath expressions against any JSON and see the matched values and their paths instantly. Supports wildcards, recursive descent, slices, and filters. 100% client-side.
Comments
0 comments
No comments yet. Be the first to share your thoughts!