„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich JSON mit bekannten und unbekannten Schlüssel/Wert-Paaren in eine Go-Struktur analysieren?

Wie kann ich JSON mit bekannten und unbekannten Schlüssel/Wert-Paaren in eine Go-Struktur analysieren?

Veröffentlicht am 07.11.2024
Durchsuche:196

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

Unmarshalieren von JSON mit beliebigen Schlüssel-/Wertpaaren zur Strukturierung

Problem

Wie kann ich einen JSON-String mit bekannten und unbekannten Schlüssel-/Wertpaaren analysieren? in eine Go-Struktur? Die unbekannten Felder können einen beliebigen Namen und Werttyp haben (String, Bool, Float64 oder Int).

Lösung

Erstellen Sie eine Struktur mit den bekannten Feldern und einem Teil der Karten für die unbekannten Felder :

type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}

Entpacken Sie die JSON-Zeichenfolge in diese Struktur:

json.Unmarshal([]byte(jsonMsg), &msg)

Das Feld „Unbekannte“ enthält eine Liste von Karten, die die unbekannten Schlüssel/Wert-Paare darstellen.

Alternativen

  1. Doppeltes Unmarshalieren:

    • Zuerst unmarshalieren in eine temporäre Struktur, die nur die bekannten Felder enthält.
    • Dann erneut in eine Map[string]interface{} entmarshalieren und die unbekannten Werte manuell extrahieren.
  2. Unmarshalieren und Typkonvertierung:

    • Unmarshalieren in eine Map[string]Schnittstelle{}.
    • Iterieren Sie über die Map und geben Sie die Werte den entsprechenden Typen zu .

Überlegungen

Alle drei Lösungen sind gültig, aber die einfachste und eleganteste ist der anfängliche strukturbasierte Ansatz. Es vermeidet die Notwendigkeit zusätzlicher Unmarshals oder manueller Typkonvertierungen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3