Heim >Backend-Entwicklung >Golang >Wie kann ich eine JSON-Karte teilweise in Go effizient analysieren?
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!