Umgang mit dynamischen JSON-Feldtypen in Go
Das Deserialisieren von JSON in strukturierte Daten in Go kann eine Herausforderung sein, wenn sich der Typ eines Schlüsselwerts ständig ändert . Beispielsweise kann eine API Daten in verschiedenen Formaten bereitstellen, wie zum Beispiel:
{ "mykey": [ {obj1}, {obj2} ] }
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Go's Approach
Um solch dynamisches JSON zu verarbeiten, sollten Sie die Verwendung von a in Betracht ziehen flexible Datenstruktur wie die folgende:
type Data struct { MyKey []interface{} `json:"mykey"` }
Diese Struktur ermöglicht die Speicherung sowohl von Zeichenfolgen als auch von Objekten im MyKey-Slice.
Unterscheidende Typen
Sobald das JSON deserialisiert ist, können Sie mithilfe eines Typschalters zwischen Zeichenfolgen und Objekten unterscheiden:
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
Mit diesem Ansatz können Sie den Typ jedes Elements im MyKey-Slice bestimmen und entsprechend verarbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische JSON-Feldtypen in Go verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!