Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Muatan go Lang tidak boleh memproses fail yaml

Muatan go Lang tidak boleh memproses fail yaml

王林
王林ke hadapan
2024-02-09 16:30:191235semak imbas

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

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.

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"`
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam