Wenn Sie mit JSON-Daten arbeiten, die Snake_case-Schlüssel verwenden, und Sie diese in CamelCase konvertieren müssen, Sie können dies effizient in Go tun. Dieser Leitfaden zeigt, wie Sie diese Aufgabe rekursiv ausführen können.
In Go 1.8 eingeführt, können Sie zwei Strukturen erstellen, die sich nur in ihren JSON-Feld-Tags unterscheiden. Dies ermöglicht eine einfache Konvertierung zwischen den beiden Strukturen:
<code class="go">package main import ( "encoding/json" "fmt" ) type ESModel struct { AB string `json:"a_b"` } type APIModel struct { AB string `json:"aB"` } func main() { b := []byte(`{ "a_b": "c" }`) var x ESModel json.Unmarshal(b, &x) b, _ = json.MarshalIndent(APIModel(x), "", " ") fmt.Println(string(b)) }</code>
Wenn die JSON-Struktur komplexer ist, können Sie einen rekursiven Ansatz zum Konvertieren der Schlüssel verwenden:
<code class="go">package main import ( "bytes" "encoding/json" "fmt" "strings" ) func main() { b := json.RawMessage(`{ "a_b": "c", "d_e": ["d"], "e_f": { "g_h": { "i_j": "k", "l_m": {} } } }`) x := convertKeys(b) buf := &bytes.Buffer{} json.Indent(buf, []byte(x), "", " ") fmt.Println(buf.String()) } 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>
In dieser Lösung konvertiert die Funktion „convertKeys“ alle Schlüssel einer JSON-Map rekursiv. Ersetzen Sie die Funktion „fixKey“ durch Ihre eigene Version zum Konvertieren von „snake_case“ in „camelCase“.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Snake-Case-Schlüssel in JSON mit Go in CamelCase?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!