JSON 轉 Go
從 JSON 產生含 JSON tag 的 Go struct
貼上 JSON 或載入範例,即可產生 Go 程式碼。
JSON 轉 Go 會產生什麼
JSON 轉 Go 會將 API 回應或任何 JSON 範例轉成可直接用於 encoding/json 的 Go struct 定義。每個匯出欄位都帶有 json:"key" tag,因此重新命名的欄位仍能解碼。struct tag 無法表示的鍵(空鍵、引號、逗號或表情符號等符號)會以 json:"-" 排除並列在提示中,而不是默默對應到錯誤的名稱。
使用方式
- 1.貼上 JSON、上傳或拖放 .json 檔案,或載入其中一個範例。
- 2.設定根 struct 名稱與套件(預設為 main)。
- 3.開啟或關閉指標與 omitempty;在「進階」中可內嵌巢狀 struct。
- 4.閱讀輸出下方的提示,然後複製程式碼或下載 models.go。
型別如何推斷
- •會檢查陣列中的每個元素,而不只是第一個,同一陣列中的物件會合併。
- •部分物件缺少的鍵為選用;有時為 null 的鍵為可為 null。兩者分開處理。
- •同一位置出現 1 與 2.5 時會放寬為小數;其他混合情況會回報。
- •空陣列與一律為 null 的值沒有型別依據,因此使用泛用型別,並以提示說明原因。
- •型別對應:string → string、integer → int64(超出時為 uint64 或 json.Number)、decimal → float64、boolean → bool、array → []T、object → struct、unknown 或混合 → any。
- •開啟指標時,可為 null 或選用的純量與 struct 會變成 *T;slice 與 any 本身已有 nil 值,因此一律不使用指標。
omitempty、限制與隱私
omitempty 只會加在範例中曾缺少或為 null 的欄位。編碼時它也會略去 0、"" 與 false 等零值,因此並不等同於「選用」。範例只代表資料某一次的樣貌,並非完整的 API 合約。依賴程式碼前,請檢查選用欄位、泛用型別與數字寬度。輸入上限為 5 MB 與 256 層巢狀;從 2 MB 起,需按下「產生」按鈕才會產生。所有處理都在瀏覽器中執行,JSON 不會上傳。
