Maison > développement back-end > Golang > le corps du texte

Comment convertir Snake-Case en clés CamelCase en JSON à l'aide de Go ?

Mary-Kate Olsen
Libérer: 2024-10-28 17:07:29
original
581 Les gens l'ont consulté

How to Convert Snake-Case to CamelCase Keys in JSON Using Go?

Conversion de clés Snake-Case en CamelCase en JSON

Dans Go, la conversion des clés d'un document JSON de Snake_case en CamelCase peut être difficile, surtout lorsque le JSON est imbriqué et peut contenir des types arbitrairement grands ou interface{}.

Méthode 1 : Utiliser différentes structures avec des balises

Pour les cas de conversion simples, vous pouvez exploitez la capacité de Go à définir différentes structures avec différentes balises. Décomposez le JSON dans la structure source avec les balises Snake_case, puis convertissez-le de manière triviale en structure cible avec les balises 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>
Copier après la connexion

Méthode 2 : Conversion récursive des clés de carte

Pour les documents JSON plus complexes, vous pouvez tenter de les regrouper dans une carte. En cas de succès, appliquez de manière récursive la fonction de conversion de clé à toutes les clés et valeurs de la carte.

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!