Maison >développement back-end >Golang >Comment puis-je désorganiser partiellement JSON dans une carte Go ?

Comment puis-je désorganiser partiellement JSON dans une carte Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 04:28:09297parcourir

How Can I Partially Unmarshal JSON into a Go Map?

Démarrer partiellement JSON dans une carte dans Go

Dans Go, il est possible de désorganiser partiellement les données JSON dans une carte lorsque les données sont enveloppées dans un objet avec clé- paires de valeurs. Cela permet d'identifier facilement le type de valeur que contient chaque clé.

Implémentation

Pour y parvenir, utilisez le package encoding/json et dégroupez-le dans un map[string]json.RawMessage. Le type json.RawMessage capture les données JSON sous-jacentes avant une analyse plus approfondie.

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

Analyse supplémentaire

Une fois la carte obtenue, vous pouvez procéder à l'analyse de la valeur de chaque clé en fonction de sa type connu.

Pour l'exemple JSON :

{
    "sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
    "say":"Hello"
}

Vous pouvez analysez sendMsg et dites comme suit :

type sendMsg struct {
    User string
    Msg  string
}

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

var str string
err = json.Unmarshal(objmap["say"], &str)

Exportation des variables

Notez que les variables de la structure sendMsg doivent être exportées (c'est-à-dire en majuscules) pour un démarshalage correct, comme indiqué :

type sendMsg struct {
    User string
    Msg  string
}

Exemple

Voir un exemple fonctionnel ici : https://play.golang.org/p/OrIjvqIsi4-

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!

Déclaration:
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