Allez analyser fichier yaml
Je suis en train d'analyser un fichier yaml avec Go. Malheureusement, je ne peux pas comprendre comment. Le fichier yaml j'ai, c'est ceci:
---
firewall_network_rules:
rule1:
src: blablabla-host
dst: blabla-hostname
...
Je dois Aller ce code mais il ne fonctionne pas:
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
"gopkg.in/yaml.v2"
)
type Config struct {
Firewall_network_rules map[string][]string
}
func main() {
filename, _ := filepath.Abs("./fruits.yml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil {
panic(err)
}
fmt.Printf("Value: %#v\n", config.Firewall_network_rules)
}
Lorsque je l'exécute, j'obtiens une erreur. Je pense que c'est parce que je n'ai pas créé une structure pour la src et dst clés/valeurs. Pour info: lorsque je modifie qu'à une liste, il fonctionne.
Donc au-dessus de code analyse ce:
---
firewall_network_rules:
rule1:
- value1
- value2
...
OriginalL'auteur Rogier Lommers | 2015-02-23
Vous devez vous connecter pour publier un commentaire.
Si vous travaillez avec google cloud ou kubernetes plus précisément, et à analyser un service.yaml comme ceci:
Fournir un exemple réel de sorte que vous obtenez le coup de la façon dont l'imbrication peut être écrite.
Il y a un service pratique appelée json-à-go https://mholt.github.io/json-to-go/ qui convertit json pour aller structs, il suffit de convertir vos DONNÉES en JSON et d'entrée en service et vous obtenez un générée automatiquement struct.
Et dernier unmarshal comme un commentaire précédent a écrit:
OriginalL'auteur JazzCat
Bien, je crois que j'ai compris par moi-même. Le morceau de code suivant fonctionne très bien. Toutes les suggestions/améliorations?
FirewallNetworkRules
et ajouter une structure de balises pour capturer le YAML mise en forme - par exemple `yaml:"firewall_network_rules"
` cliquez ici pour Voir la documentation sur la structure de l'utilisation des balises dans le fichier YAML lib: godoc.org/gopkg.in/yaml.v2#MarshalMerci pour votre suggestion, en effet, elle précise que mon code.
OriginalL'auteur Rogier Lommers
Pourquoi ne pas organiser votre fichier yaml comme ci-dessous si vous n'avez pas de soins sur le nom de la règle?
De sorte que le code sera comme ceci, il est propre et extensible:
OriginalL'auteur boyal
Si votre fichier YAML est simple (simple emboîtement) comme suit
Ici, vous pouvez utiliser l'interface au lieu de déclarer struct.
Cela fonctionne bien pour le niveau 1 de nidification, si vous avez des complexes de nidification, il est alors recommandé d'utiliser
struct
.OriginalL'auteur Reoxey