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

王林
Libérer: 2024-02-09 16:30:19
avant
1292 Les gens l'ont consulté

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
Copier après la connexion

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)
}
Copier après la connexion

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"`
}
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal