У меня возникли проблемы при перекодировании файла YAML с go и yaml.v3
. В основном у меня есть файл YAML, для которого отступ root равен 6 (root отступ на 6 пробелов).
Мне нужно прочитать этот файл, затем изменить несколько значений и переписать файл, однако при переписывании структуры YAML в файл я теряю этот отступ. Есть идеи, как я могу этого добиться? в противном случае я, вероятно, перечитаю файл как текстовый и добавлю отступ.
Ниже приведен код, который я использую.
Отрывок из файла YAML:
doc:
a: 'default'
b: 42
c: 3
structure: 'flat'
use_timezone: ''
kafka_nodes: 3
Анализ файла YAML и обратная запись в файл
var ymlConfig yaml.Node
err = yaml.Unmarshal([]byte(pullConfig()), &ymlConfig)
//code ommited for brievity (some value verification and modification)
file, err := os.OpenFile("config.yml", os.O_WRONLY, os.ModeAppend)
if err != nil {
panic(err)
}
defer file.Close()
d := yaml.NewEncoder(file)
d.SetIndent(4)// tried changing the indent but it does not change the root
defer d.Close()
if err := d.Encode(&ymlConfig); err != nil {
panic(err)
}
Результат перекодирования
doc:
a: 'default'
b: 42
c: 3
structure: 'flat'
use_timezone: ''
kafka_nodes: 3