Utilo

JSON 轉型別定義

根據 JSON 生成 Go 結構體、Rust serde 結構體、Zod schema、Pydantic 模型、Kotlin data class、Java record、C# 類、Swift Codable 和 TypeScript 型別,自動識別陣列中的可選欄位和可空欄位。

這個JSON到型別生成器的作用

寫模型類以手寫一個大API響應是緩慢的,容易出現錯誤的。貼上一個 JSON 樣本,這個工具推斷出一個完整的型別模型,並將其列印成 Go 結構使用 json 標籤,Rust 結構使用 serde 衍生,Zod 方案,Pydantic 模型,Kotlin 資料類,Java 記錄,C# 類,Swift Codable 結構或 TypeScript 介面。嵌入式物件會成為自己的命名型別,物件陣列會被合併,

使用方法

  1. 貼上JSON到輸入或載入樣本。
  2. 設定 根型別名稱,例如 User 或 OrderResponse。
  3. 選擇目標語言。輸出會立即再生。
  4. 複製程式碼到您的專案中並調整您的域知識超過推理的名稱或型別。

推理是如何工作的

  • 可選欄位: 如果陣列中的某些元素缺少一個鍵,則標記為可選 (TS 中的?,Rust 中的Option<T>,Go 中的omitempty,Pydantic 中的= None)。
  • 可取消的欄位: null 值使得目標語言中的欄位可以取消。
  • **數:**整數和浮量分別被追蹤,因此42變成int64/i64/Long,而4.2變成浮量型別。
  • **混合型別:**當同一個欄位包含不同的型別時,具有聯盟的語言 (TypeScript,Zod,Pydantic) 得到一個聯盟,而其他型別則迴歸到一個通用JSON值型別。
  • 命名: user_id 或 created-at 這樣的金鑰每種語言都被轉換為語義欄位名稱,原始金鑰被儲存在標籤或註釋中 (json:"user_id",#[serde(rename)],@SerialName,CodingKeys)。

提示

  • 給它一個代表性樣本。一個空陣列的單個物件不會告訴該工具陣列的專案。
  • 將多個響應合併到一個頂級陣列中,以可靠地捕獲可選欄位。
  • 結果出口的模式和推斷型別,所以你得到執行時驗證和靜態打字一起。

常見問題

我的JSON有沒有上傳到任何地方?

沒有。解析和程式碼生成發生在瀏覽器中的背景工作者。

為什麼一個欄位被鍵入為any或interface{}?

在每一個樣本中都是null,或者是空陣列,。提供一個具有真實價值的樣本。

這裡可以處理約會嗎?

JSON沒有日期型別,所以ISO字串是字串。如果解碼器支援,請手動將它們更換為time.Time,datetime或Date。

可以生成 JSON 方案嗎?

使用 Zod 或 Pydantic 輸出;兩個庫都可以直接匯出 JSON 方案。

安全。所有處理都透過 JavaScript、Web Worker 和瀏覽器 API 在本地完成,你輸入、貼上或上傳的任何內容都不會傳送到我們的伺服器。

本頁內容由英文自動翻譯而來,如發現錯誤,歡迎告訴我們。