Editor PHP Zimo mendapati bahawa ramai pembangun bahasa Go menghadapi masalah semasa memproses fail yaml. Walaupun bahasa Go menyediakan fungsi muat untuk memuatkan fail yaml, fungsi ini tidak dapat mengendalikan penghuraian fail yaml dengan betul. Masalah ini telah menyebabkan ramai pembangun menghadapi kesukaran semasa memproses fail YAML. Jadi, bagaimana untuk menyelesaikan masalah ini? Dalam artikel ini, kami akan memperkenalkan beberapa penyelesaian untuk membantu pembangun mengendalikan fail YAML dengan lancar.
Saya cuba membaca fail yaml dan menyimpannya dalam pembolehubah, tetapi atas sebab tertentu objek tatasusunan dalam fail yaml tidak boleh menyahmarshal fail itu. Ia menunjukkan data kosong.
Berikut ialah kandungan fail yaml saya
--- version: "1.2" bunits: - name: buname bugroupid: asd bustgroupid: asd - name: buname2 bugroupid: asd2 bustgroupid: asd2
Berikut ialah kod yang digunakan
type SResponse struct { Version string `json:"version"` BUnits []BUnit `json:"bUnits"` } type BUnit struct { Name string `json:"name"` BuUnitGroupID string `json:"buGroupID"` BuUnitStGroupID string `json:"buStaticGroupID"` } func main() { _printf := fmt.Printf _printf("Start") var sListResponse SResponse source, err2 := ioutil.ReadFile("squads2.yml") if err2 != nil { _printf("Couldn't read yaml file.") } err2 = yaml.Unmarshal(source, &sListResponse) if err2 != nil { _printf("Error") } _printf("Output: %s\n", sListResponse) }
Kod membaca bahagian versi, tetapi tatasusunan bunit kosong. Sila buat cadangan.
Hiaskan struct anda dengan teg json
- anda mungkin memerlukan ini atau tidak (bergantung pada sama ada anda kemudiannya mengeksport/mengimport data ini dalam format json).
Tetapi masalah yang anda hadapi ialah yaml
导入 - 所以你需要用 yaml
标签来装饰你的 struct
takrifan.
Untuk menyokong json
和 yaml
dan yaml
marshalling/unmarshaling, cuma kemas kini tag anda seperti berikut:
type SResponse struct { Version string `json:"version" yaml:"version"` BUnits []BUnit `json:"bUnits" yaml:"bUnits"` } type BUnit struct { Name string `json:"name" yaml:"name"` BuUnitGroupID string `json:"buGroupID" yaml:"buGroupID"` BuUnitStGroupID string `json:"buStaticGroupID" yaml:"buStaticGroupID"` }
Atau jika anda tidak memerlukan pengekodan/penyahkod json, alih keluar tag json
sahaja.
Atas ialah kandungan terperinci Muatan go Lang tidak boleh memproses fail yaml. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!