Konvertieren von Snake-Case- in CamelCase-Schlüsseln in JSON
In Go kann das Konvertieren von Schlüsseln in einem JSON-Dokument von Snake_case in CamelCase eine Herausforderung sein. insbesondere wenn das JSON verschachtelt ist und beliebig große oder Interface{}-Typen enthalten kann.
Methode 1: Verschiedene Strukturen mit Tags verwenden
Für einfache Konvertierungsfälle können Sie dies tun Nutzen Sie die Fähigkeit von Go, verschiedene Strukturen mit unterschiedlichen Tags zu definieren. Entpacken Sie das JSON mit den Tags „snake_case“ in die Quellstruktur und konvertieren Sie es dann ganz einfach mit den Tags „camelCase“ in die Zielstruktur.
<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>
Methode 2: Rekursives Konvertieren von Kartenschlüsseln
Bei komplexeren JSON-Dokumenten können Sie versuchen, sie in eine Karte zu entmarshalieren. Bei Erfolg wenden Sie die Schlüsselkonvertierungsfunktion rekursiv auf alle Schlüssel und Werte innerhalb der Karte an.
<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>
Das obige ist der detaillierte Inhalt vonWie konvertiert man Snake-Case-Schlüssel in JSON mit Go in CamelCase-Schlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!