開發者 / JSON
JSON 轉 Go Struct
貼上 JSON 範例,取得含有匯出欄位名稱、Go linter 預期的縮寫格式與 json 標籤的 Go struct 定義,可直接貼到程式碼中。
JSON 轉 Go Struct: 這個轉換器會在瀏覽器中讀取 JSON,並為每個物件建立一個 struct。鍵會轉成匯出的 CamelCase 名稱,ID、URL 和 HTTP 等縮寫會依 golint 的建議使用大寫;每個欄位也會保留原始鍵,放在 json 標籤中,格式則按照 gofmt 的排版方式呈現。陣列中的物件會合併處理,因此某些物件缺少的鍵會加上 omitempty,而有些物件中的鍵值為 null 時,該欄位會變成指標。同一位置只要出現小數,整數就會轉成 float64;否則整數會轉成 int64。 全程在瀏覽器中於本機執行,檔案不會上傳至伺服器。
- 分類
- 開發者工具
- 使用次數
- 在瀏覽器中
- 費用
- 免費・免註冊
- 可用狀態
- 可立即使用
全程在瀏覽器中執行
前往
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}陣列中部分物件缺少的鍵會加上omitempty;有時為null的鍵會轉為指標。請依照您API的文件確認型別:範例只會顯示其中包含的內容。
從範例到型別
Go會使用encoding/json將JSON解碼為結構,並依照json標籤將每個鍵對應到欄位;如果沒有標籤,則會忽略大小寫,依名稱進行對應。只有匯出的欄位,也就是以大寫字母開頭的欄位,才會被填入,因此這裡的每個欄位都以大寫字母開頭,並在標籤中保留原始鍵。
單一範例只能顯示其中包含的內容。若一份使用者清單中有一位使用者沒有email,轉換器就能判斷email是選填項目;單一物件則無法判斷。若有多個具代表性的物件,請將它們貼在陣列中,並對照API文件檢查結果。JSON格式化工具可以先協助你看清長篇回應的結構。
其他語言和結構描述
同一份範例可以透過JSON轉TypeScript轉換成TypeScript介面,供讀取相同API的前端使用;也可以轉成JSON Schema,在資料進入系統的邊界進行驗證。
使用方式
- 貼上 JSON 物件或陣列,例如 API 回應。
- 命名頂層型別,並選擇使用獨立或巢狀 struct。
- 複製 Go 程式碼。
隱私與限制
您的 JSON 會在瀏覽器中轉換,絕不上傳。
相關工具
常見問題
為什麼 user_id 會變成 UserID,而不是 UserId?
Go 的風格會將縮寫統一使用同一種大小寫,因此會寫成 UserID、APIKey 和 AvatarURL。這個轉換器採用 golint 的縮寫清單;golint 是推廣這項規則的 linter。
欄位什麼時候會加上 omitempty 或變成指標?
當範例是由多個物件組成的陣列,且某個鍵在部分物件中缺少時,該欄位會加上 omitempty,進行 marshalling 時如果欄位為空就會省略。當某些物件中的鍵值為 null 時,該欄位會變成指標,讓 nil 可以代表 null。您也可以為每個欄位加上 omitempty。
為什麼會使用 int64 和 float64?
JSON 只有一種數字型別。不含小數點的值會變成 int64,含有小數的值則會變成 float64。如果 ID 可能超過 2^53,或實際上是偽裝成數字的字串,請手動修改型別:範例只能顯示其中包含的值。
null 或空陣列會怎麼處理?
如果沒有足夠的資訊可供判斷,永遠是 null 的欄位或空陣列會使用 any(interface{})型別,接受任何內容。確定實際型別後,請將它替換掉。
免費工具・使用在瀏覽器中次・免註冊