Heim > Backend-Entwicklung > Golang > Wie kann ich JSON mit mehreren Nachrichtentypen in Go effizient analysieren?

Wie kann ich JSON mit mehreren Nachrichtentypen in Go effizient analysieren?

Barbara Streisand
Freigeben: 2024-12-21 12:02:11
Original
128 Leute haben es durchsucht

How to Efficiently Parse JSON with Multiple Message Types in Go?

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":
    // ...
}
Nach dem Login kopieren

Entpacken Sie für jeden identifizierten Schlüssel den entsprechenden Wert in eine json.RawMessage statt in eine Schnittstelle{}:

var myAck json.RawMessage
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage