Heim >Backend-Entwicklung >Golang >Wie kann ich eine JSON-Karte teilweise in Go effizient analysieren?

Wie kann ich eine JSON-Karte teilweise in Go effizient analysieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 07:45:09252Durchsuche

How to Efficiently Parse Partially a JSON Map in Go?

JSON-Daten in eine Karte in Go analysieren

Websocket-Server empfangen häufig JSON-Daten verpackt in Schlüssel-Wert-Paaren, die den Typ des Werts angeben . Während das Paket „encoding/json“ praktische Unmarshalling-Funktionen bietet, besteht die Notwendigkeit, die JSON-Daten zur weiteren Verarbeitung teilweise in eine Karte zu analysieren.

Ansatz unter Verwendung einer Karte[string]json.RawMessage

Um ein teilweises Unmarshalling zu erreichen, kann man eine Map[string]json.RawMessage verwenden. Dieser Ansatz ermöglicht das Unmarshaling der JSON-Daten in einer Karte, wobei die Schlüssel die Eigenschaftsnamen und die Werte die nicht geparsten JSON-Daten sind.

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
}

Bei diesem Ansatz enthält die objmap einen Schlüssel „sendMsg „ mit einem Wert, der die JSON-Rohdaten darstellt, die das sendMsg-Objekt darstellen. Durch weiteres Unmarshaling dieser Daten in eine sendMsg-Struktur kann auf die einzelnen Felder (Benutzer und Nachricht) zugegriffen werden.

Hinweis: Um ein erfolgreiches Unmarshaling sicherzustellen, denken Sie daran, die Felder in der sendMsg-Struktur zu exportieren (d. h. Benutzer und Nachricht).

Das obige ist der detaillierte Inhalt vonWie kann ich eine JSON-Karte teilweise in Go effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn