JSON in Golang ohne redundantes Unmarshaling analysieren
Beim Umgang mit JSON-Daten, die verschiedene Nachrichtentypen enthalten, ist ein direktes Unmarshaling in bekannte Strukturtypen möglicherweise nicht möglich machbar. Stattdessen kann ein zweistufiger Prozess zur Lösung dieses Problems eingesetzt werden.
Schritt 1: Unmarshalieren in eine generische Karte
Unmarshalieren des JSON-Objekts in eine generische Karte[ string]interface{} zum Abrufen der Schlüssel und Werte der obersten Ebene.
Schritt 2: Identifizieren und Unmarshalieren Spezifische Schlüssel
Durchlaufen Sie die Karte und identifizieren Sie den Schlüssel, der dem gewünschten Nachrichtentyp entspricht. Beispiel:
switch k { case "ping": // ... case "ack": // ... }
Entpacken Sie für jeden identifizierten Schlüssel den entsprechenden Wert in eine json.RawMessage statt in eine Schnittstelle{}:
var myAck json.RawMessage
Schritt 3: Entmarshalieren in Spezifische Struktur
Um die RawMessage schließlich in die gewünschte Struktur umzuwandeln, entpacken Sie sie direkt ohne die Notwendigkeit eines zwischengeschalteten Marshalling-/Unmarshaling-Prozesses:
err = json.Unmarshal(myAck, &myAck)
Durch teilweises Unmarshaling in RawMessage und die Vermeidung redundanter Unmarshaling vereinfacht dieser Ansatz den Prozess und verbessert die Effizienz beim Parsen komplexer JSON-Daten.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit mehreren Nachrichtentypen in Go effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!