將JSON 中的蛇形命名法轉換為駝峰命名法
在Go 中,將JSON 文件中的鍵從Snake_Case 轉換為CamelCase 可能具有挑戰性,特別是當JSON 嵌套並且可能包含任意大或interface{} 類型時。
方法 1:使用帶有標籤的不同結構
對於簡單的轉換情況,您可以利用 Go 的能力來定義具有不同標籤的不同結構。使用snake_case標籤將JSON解組到來源結構中,然後使用camelCase標籤將其簡單地轉換為目標結構。
<code class="go">import ( "encoding/json" ) // Source struct with snake_case tags type ESModel struct { AB string `json:"a_b"` } // Target struct with camelCase tags type APIModel struct { AB string `json:"aB"` } func ConvertKeys(json []byte) []byte { var x ESModel json.Unmarshal(b, &x) b, _ = json.MarshalIndent(APIModel(x), "", " ") return b }</code>
方法2:遞歸地轉換映射鍵
對於更複雜的 JSON 文檔,您可以嘗試將其解組到映射中。如果成功,則遞歸地將鍵轉換函數套用至映射中的所有鍵和值。
<code class="go">import ( "bytes" "encoding/json" "fmt" "strings" ) func ConvertKeys(j json.RawMessage) json.RawMessage { m := make(map[string]json.RawMessage) if err := json.Unmarshal([]byte(j), &m); err != nil { // Not a JSON object return j } for k, v := range m { fixed := fixKey(k) delete(m, k) m[fixed] = convertKeys(v) } b, err := json.Marshal(m) if err != nil { return j } return json.RawMessage(b) } func fixKey(key string) string { return strings.ToUpper(key) }</code>
以上是如何使用 Go 將 JSON 中的蛇形命名法轉換為駝峰命名法鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!