Heim  >  Artikel  >  Backend-Entwicklung  >  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?

DDD
DDDOriginal
2024-10-28 02:13:30369Durchsuche

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 eine JSON-Zeichenfolge 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 einen Teil der Karten für die unbekannten Felder :

<code class="go">type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}</code>

Entpacken Sie die JSON-Zeichenfolge in diese Struktur:

<code class="go">json.Unmarshal([]byte(jsonMsg), &msg)</code>

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 entmarshalieren Sie erneut in eine Map[string]interface{} und extrahieren Sie die unbekannten Werte manuell.
  2. Unmarshalieren und Typkonvertierung:

    • Unmarshalieren in eine Map[string]-Schnittstelle{}.
    • Iterieren Sie über die Karte und geben Sie die Werte in entsprechende Typen ein.

Ü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.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit bekannten und unbekannten Schlüssel/Wert-Paaren in eine Go-Struktur 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