JSON to Go 結構轉換器將 JSON 文件轉換為描述它的 Go 類型聲明,因此您可以使用編碼/json 解組相同的數據,而不是手動輸入結構。每個 JSON 物件都變成 Go 結構,每個欄位都帶有 json:「key」標籤,將其映射回原始名稱,並且從值推斷標量類型:JSON 字串變成字串,整數變成 int,十進制變成 float64, true 和 false 變成 bool,null 變成介面{}。貼上有效負載,然後返回準備編譯類型區塊。
它的存在是因為從真實的 API 回應編寫 Go 結構很乏味,而且很容易犯微妙的錯誤。必須匯出欄位名稱並遵循 Go 約定,因此 id 變成 ID,user_url 變成 UserURL,而 json 標籤必須保留精確的原始金鑰或 json。Unmarshal 無聲地跳過該欄位。嵌套物件需要自己的結構,並且物件數組需要一個涵蓋任何元素所擁有的每個金鑰的單一結構。在深度嵌套回應中執行此操作是錯誤蔓延的地方。轉換器一致地應用這些規則:嵌套物件變成內聯結構,並且物件數組被合併,因此僅出現在某些元素中的金鑰仍然存在於生成的類型中。
一切都在您的瀏覽器中運行。您貼上過的 JSON 會在您自己的裝置上以 JavaScript 進行解析和分析,因此不會上傳、記錄或存儲任何內容,並且一旦頁面加載,該工具就會繼續與斷開連接的網路一起工作。當有效負載是私有 API 回應或包含您不想發送到任何地方的金鑰和值時,這一點很重要。您可以重新命名根類型,當您需要更寬的類型時將整數切換到 int64,當您希望從編碼輸出中省略零值時,可以為每個標籤新增省略。
將 JSON 物件或陣列貼到輸入框中。如果您想在使用自己的資料之前查看產生的結構的形狀,請先載入範例。
輸入頂級結構的名稱,例如 User 或 ApiResponse。它被清理成有效的導出 Go 標識符,以便它按照寫入的方式進行編譯。
選擇整數 int 或 int64,如果要在將結構編碼回 JSON 時省略空字段,請開啟 omitempty。
按一下「轉換」建立結構定義,然後將其複製到 Go 檔案中。無效的 JSON 會報告並帶有精確的解析器訊息,以便您可以修復它。
每個欄位都保留一個 json:「original_key」標籤,因此 json。Unmarshal 將資料映射回確切的 JSON 名稱,即使 Go 欄位被重新命名以遵循約定。
匯出金鑰並且常見首字母縮寫大寫,因此 id 變成 ID,user_url 變成 UserURL,html_body 變成 HTMLBody,符合 golint 期望。
嵌套的 JSON 物件會變成任何深度的內聯結構文字,因此整個形狀存在於一個聲明中,您可以貼上為單一區塊。
一系列物件產生一個結構,涵蓋任何元素擁有的每個鍵,並且鍵的衝突值類型回退到介面{}而不是失敗。
Generate a JSON Schema from any JSON sample. Infers types, merges arrays of objects into one item schema, derives required fields, and detects date-time, email, uri, and uuid formats. Draft-07 and 2020-12 output. 100% client-side.
Sort the keys of a JSON object alphabetically, recursively through nested objects, with optional array sorting. Ascending or descending, minify or pretty. Client-side, no signup.
Convert JSON into a PHP array literal. Choose short [] or array() syntax, indentation, and an optional variable assignment, then copy the result. 100% in your browser.
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.
0 comments
No comments yet. Be the first to share your thoughts!