Maison >développement back-end >Golang >Go Lang Load ne peut pas traiter le fichier yaml

Go Lang Load ne peut pas traiter le fichier yaml

王林
王林avant
2024-02-09 16:30:191293parcourir

go Lang load无法处理yaml文件

L'éditeur PHP Zimo a découvert que de nombreux développeurs du langage Go rencontraient des problèmes lors du traitement des fichiers yaml. Bien que le langage Go fournisse la fonction de chargement pour charger les fichiers yaml, cette fonction ne peut pas gérer correctement l'analyse des fichiers yaml. Ce problème a amené de nombreux développeurs à rencontrer des difficultés lors du traitement des fichiers YAML. Alors, comment résoudre ce problème ? Dans cet article, nous présenterons quelques solutions pour aider les développeurs à gérer les fichiers YAML en douceur.

Contenu de la question

J'essaie de lire un fichier yaml et de le stocker dans une variable, mais pour une raison quelconque, l'objet tableau dans le fichier yaml ne peut pas désorganiser le fichier. Il affiche des données vides.

Ce qui suit est le contenu de mon fichier yaml

---
version: "1.2"

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

Voici le code utilisé

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

Le code lit la partie version, mais le tableau bunits est vide. Veuillez faire des suggestions.

Solution de contournement

Décorez votre structure avec une balise json - vous en aurez peut-être besoin ou non (selon que vous exportez/importez ultérieurement ces données au format json). Mais le problème que vous rencontrez est la yaml 导入 - 所以你需要用 yaml 标签来装饰你的 struct définition.

Pour prendre en charge le marshalling/unmarshalling jsonyaml et yaml, mettez simplement à jour vos balises comme suit :

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

Ou si vous n'avez pas besoin d'encodage/décodage json, supprimez simplement la balise json.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer