Je suis en train de désorganiser les éléments suivants YAML (en utilisant gopkg.in/yaml.v2):YAML dynamique Unmarshal à la carte de struct
m:
- unit: km
formula: magnitude/1000
testFixtures:
- input: 1000
expected: 1
l:
- unit: ml
formula: magnitude * 1000
testFixtures:
- input: 1
expected: 1000
Avec le code suivant:
type ConversionTestFixture struct {
Input float64 `yaml:"input"`
Expected float64 `yaml:"expected"`
}
type conversionGroup struct {
Unit string `yaml:"unit"`
Formula string `yaml:"formula"`
TestFixtures []ConversionTestFixture `yaml:"testFixtures"`
}
conversionGroups := make(map[string]conversionGroup)
err = yaml.Unmarshal([]byte(raw), &conversionGroups)
if err != nil {
return
}
fmt.Println("conversionGroups", conversionGroups)
Mais il me donne l'erreur suivante:
Error: Received unexpected error:
yaml: unmarshal errors:
line 1: cannot unmarshal !!map into []map[string]main.conversionGroup
les propriétés de haut niveau sont dynamiques, donc je dois les analyser sous forme de chaîne, toutes les autres clés dans la la structure sera toujours la même, d'où les structures pour ces parties. Comment puis-je analyser cela?
(code complet sont à https://github.com/tirithen/unit-conversion/blob/master/convert.go#L84)
Qu'est-ce que c'est «dynamique YAML»? Il n'y a aucune mention de "dynamique" dans la [spécification YAML] (http://www.yaml.org/spec/1.2/spec.html). De quel «niveau supérieur» parlez-vous? Je supposerais le mappage à la racine de la structure de données représentée par YAML, mais ce mappage n'a aucune propriété, car il ne possède pas d'ancre ni de balise. Veuillez ** modifier ** votre message pour clarifier ce à quoi vous faites référence. – Anthon