Das Ziel besteht darin, eine JSON-Zeichenfolge zu entmarshalieren, die eine Mischung aus bekannten und unbekannte Schlüssel/Wert-Paare in eine Go-Struktur. Die bekannten Felder sollten in bestimmte Strukturfelder entmarshallt werden, während die unbekannten Felder als Sammlung von Schlüssel/Wert-Paaren innerhalb der Struktur gespeichert werden sollten.
Um dies zu erreichen, kann eine Struktur mit einer Kombination aus bekannten Feldern und einem Kartenausschnitt definiert werden:
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
Dieser JSON-String:
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
kann wie folgt entmarshaled werden Schritte:
Alternativ kann der JSON anstelle einer Struktur direkt in ein Map[string]interface{} entmarshaled werden, das Zugriff auf alle Schlüssel/Wert-Paare als dynamische Sammlung bietet.
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
Die Wahl zwischen der Verwendung einer Struktur oder einer Karte hängt von den spezifischen Anforderungen der Anwendung ab. Wenn vordefinierte bekannte Felder und eine strukturierte Vorgehensweise gewünscht sind, bietet sich eine Struktur an. Wenn die genaue Natur der unbekannten Felder nicht im Voraus bekannt ist oder eine flexiblere dynamische Datenstruktur erforderlich ist, ist eine Karte eine praktikable Option.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit beliebigen Schlüssel/Wert-Paaren in eine Go-Struktur entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!