Rumah > Artikel > pembangunan bahagian belakang > Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai
editor php Baicao membawakan anda artikel tentang menghuraikan tatasusunan JSON dalam golang. Dalam golang, kita boleh menggunakan jenis tersuai untuk menghuraikan tatasusunan JSON yang kompleks. Pendekatan ini bukan sahaja membolehkan pemahaman dan pemprosesan data JSON yang lebih baik, tetapi juga menyediakan cara operasi yang lebih fleksibel. Artikel ini akan memperkenalkan secara terperinci cara menggunakan jenis tersuai untuk menghuraikan tatasusunan JSON dan memberikan beberapa kod contoh praktikal untuk membantu anda memahami dan menggunakan teknik ini dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, anda boleh mendapat banyak manfaat daripada artikel ini, datang dan teroka bersama-sama!
Saya cuba menghuraikan tatasusunan json dalam golang, formatnya adalah seperti berikut:
2beef840f8f9d8bb724c7736cb14989Sebagai contoh, json harus mengandungi skema jadual yang berbeza. Saya telah mencuba kod berikut tetapi skema kembali kosong:
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() }
Apa salah saya? Saya akan berterima kasih jika anda boleh menunjukkan kesilapan saya Terima kasih!
Untuk memadankan sumber/destinasi JSON anda boleh menggunakan jenis berikut:
type Schema map[string][]ColumnType
Sebagai alternatif, anda boleh menggunakan sesuatu yang lebih mudah digunakan:
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 }
Atas ialah kandungan terperinci Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!