Muatan go Lang tidak boleh memproses fail yaml

王林
Lepaskan: 2024-02-09 16:30:19
ke hadapan
1264 orang telah melayarinya

go Lang load无法处理yaml文件

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.

Kandungan soalan

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
Salin selepas log masuk

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)
}
Salin selepas log masuk

Kod membaca bahagian versi, tetapi tatasusunan bunit kosong. Sila buat cadangan.

Penyelesaian

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 jsonyaml 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"`
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!