Maison > développement back-end > Golang > Comment analyser efficacement partiellement une carte JSON dans Go ?

Comment analyser efficacement partiellement une carte JSON dans Go ?

Susan Sarandon
Libérer: 2024-12-26 07:45:09
original
334 Les gens l'ont consulté

How to Efficiently Parse Partially a JSON Map in Go?

Analyse des données JSON dans une carte dans Go

Les serveurs Websocket reçoivent souvent des données JSON enveloppées dans des paires clé-valeur qui indiquent le type de valeur . Bien que le package « encoding/json » offre des capacités de démarshalling pratiques, il est nécessaire d'analyser partiellement les données JSON dans une carte pour un traitement ultérieur.

Approche utilisant une map[string]json.RawMessage

Pour réaliser un démarshalling partiel, on peut utiliser un map[string]json.RawMessage. Cette approche permet aux données JSON d'être désorganisées dans une carte, les clés étant les noms de propriétés et les valeurs étant les données JSON non analysées.

import (
    "encoding/json"
    "fmt"
)

func main() {
    data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)

    var objmap map[string]json.RawMessage
    err := json.Unmarshal(data, &objmap)
    if err != nil {
        fmt.Printf("Error unmarshaling JSON: %v", err)
        return
    }

    // Unpack Individual Values

    // Parsing sendMsg
    var s sendMsg
    err = json.Unmarshal(objmap["sendMsg"], &s)
    if err != nil {
        fmt.Printf("Error unmarshaling 'sendMsg': %v", err)
        return
    }
    fmt.Println("sendMsg:", s)

    // Parsing say
    var str string
    err = json.Unmarshal(objmap["say"], &str)
    if err != nil {
        fmt.Printf("Error unmarshaling 'say': %v", err)
        return
    }
    fmt.Println("say:", str)
}

type sendMsg struct {
    User string
    Msg  string
}
Copier après la connexion

Dans cette approche, l'objmap contiendra une clé "sendMsg " avec une valeur qui correspond aux données JSON brutes représentant l'objet sendMsg. En décomposant davantage ces données dans une structure sendMsg, les champs individuels (Utilisateur et Msg) sont accessibles.

Remarque : Pour garantir une désorganisation réussie, n'oubliez pas d'exporter les champs dans la structure sendMsg. (c'est-à-dire, utilisateur et message).

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 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