l'éditeur php Baicao vous propose un article sur l'analyse des tableaux JSON dans Golang. Dans Golang, nous pouvons utiliser des types personnalisés pour analyser des tableaux JSON complexes. Cette approche permet non seulement de mieux comprendre et traiter les données JSON, mais offre également un mode de fonctionnement plus flexible. Cet article présentera en détail comment utiliser les types personnalisés pour analyser les tableaux JSON et donnera quelques exemples de codes pratiques pour vous aider à mieux comprendre et appliquer cette technique. Que vous soyez débutant ou développeur expérimenté, vous pouvez beaucoup bénéficier de cet article, venez explorer ensemble !
J'essaie d'analyser un tableau json en golang, le format est le suivant :
2bœuf840f8f9d8bb724c7736cb14989Par exemple, json doit contenir un schéma de différentes tables. J'ai essayé le code suivant mais le schéma revient vide :
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() }
Qu'est-ce que j'ai fait de mal ? Je vous serais reconnaissant si vous pouviez signaler mon erreur Merci!
Pour faire correspondre le JSON source/destination, vous pouvez utiliser les types suivants :
type Schema map[string][]ColumnType
Vous pouvez également utiliser quelque chose de plus simple à utiliser :
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 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!