首頁  >  文章  >  後端開發  >  go Lang load無法處理yaml文件

go Lang load無法處理yaml文件

王林
王林轉載
2024-02-09 16:30:191235瀏覽

go Lang load无法处理yaml文件

php小編子墨發現,許多Go語言開發者在處理yaml檔案時遇到了問題。儘管Go語言提供了load函數用於載入yaml文件,但該函數卻無法正確處理yaml文件的解析。這個問題導致了許多開發者在處理yaml檔案時遇到了困難。那麼,如何解決這個問題呢?在本文中,我們將為大家介紹一些解決方案,幫助開發者順利處理yaml檔案。

問題內容

我正在嘗試讀取 yaml 檔案並將其儲存在變數中,但由於某種原因,yaml 檔案中的陣列物件無法解組該檔案。它顯示空白數據。

下面是我的yaml檔案內容

---
version: "1.2"

bunits:
  - name: buname
    bugroupid: asd
    bustgroupid: asd
  - name: buname2
    bugroupid: asd2
    bustgroupid: asd2

下面是正在使用的程式碼

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)
}

程式碼讀取版本部分,但 bunits 陣列為空。請提出建議。

解決方法

您的結構體用json 標記進行裝飾- 您可能需要也可能不需要(取決於您稍後是否以json 格式匯出/匯入此數據)。 但你手邊的問題是 yaml 導入 - 所以你需要用 yaml 標籤來裝飾你的 struct 定義。

要支援 jsonyaml 編組/解組,只需更新您的標籤,如下所示:

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

或如果您不需要 json 編碼/解碼,則只需刪除 json 標籤即可。

以上是go Lang load無法處理yaml文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除