Heim >Backend-Entwicklung >Golang >Analysieren Sie das JSON-Array in Golang mit einem benutzerdefinierten Typ
php-Editor Baicao bringt Ihnen einen Artikel über das Parsen von JSON-Arrays in Golang. In Golang können wir benutzerdefinierte Typen verwenden, um komplexe JSON-Arrays zu analysieren. Dieser Ansatz ermöglicht nicht nur ein besseres Verständnis und eine bessere Verarbeitung von JSON-Daten, sondern bietet auch eine flexiblere Arbeitsweise. In diesem Artikel wird detailliert beschrieben, wie Sie benutzerdefinierte Typen zum Parsen von JSON-Arrays verwenden, und es werden einige praktische Beispielcodes bereitgestellt, die Ihnen helfen, diese Technik besser zu verstehen und anzuwenden. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, Sie werden von diesem Artikel sehr profitieren. Kommen Sie und erkunden Sie ihn gemeinsam!
Ich versuche, ein JSON-Array in Golang zu analysieren. Das Format ist wie folgt:
2beef840f8f9d8bb724c7736cb14989Zum Beispiel sollte JSON Schemata verschiedener Tabellen enthalten. Ich habe den folgenden Code ausprobiert, aber das Schema gibt leer zurück:
package main import ( "encoding/json" "io" "log" "os" ) type ColumnType struct { Name string `json:"name"` Type string `json:"type"` } type Schema struct { Schema map[string][]ColumnType } func main() { mocksSchemas, _ := os.Open("parse_config/mock_schema.json") var schemas []Schema content, err := io.ReadAll(mocksSchemas) if err != nil { log.Fatal("Error when reading mock file: ", err) } err = json.Unmarshal(content, &schemas) if err != nil { log.Fatal("Error during Unmarshal(): ", err) } defer mocksSchemas.Close() }
Was habe ich falsch gemacht? Ich wäre Ihnen dankbar, wenn Sie mich auf meinen Fehler hinweisen könnten Danke!
Um Quell-/Ziel-JSON abzugleichen, können Sie die folgenden Typen verwenden:
type Schema map[string][]ColumnType
Alternativ können Sie etwas verwenden, das einfacher zu verwenden ist:
type Schema struct { Table string Columns []ColumnType } func (s Schema) MarshalJSON() ([]byte, error) { return json.Marshal(map[string][]ColumnType{ s.Table: s.Columns, }) } func (s *Schema) UnmarshalJSON(data []byte) error { var m map[string][]ColumnType if err := json.Unmarshal(data, &m); err != nil { return err } for k, v := range m { s.Table = k s.Columns = v break } return nil }
Das obige ist der detaillierte Inhalt vonAnalysieren Sie das JSON-Array in Golang mit einem benutzerdefinierten Typ. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!