【发布时间】:2018-07-21 20:06:10
【问题描述】:
我需要读取 yaml 文件并更改一些属性值并将其写回 FS。
文件内容是这样的
ID: mytest
mod:
- name: user
type: dev
parameters:
size: 256M
build:
builder: mybuild
type OBJ struct {
Id string `yaml:"ID"`
Mod []*Mod `yaml:"mod,omitempty"`
}
type Mod struct {
Name string
Type string
Parameters Parameters `yaml:"parameters,omitempty"`
Build Parameters `yaml:"build,omitempty"`
}
我需要从输出中省略 type 属性
ID: mytest
mod:
- name: user
parameters:
size: 256M
build:
builder: mybuild
问题是,我能读,我可以改变属性值但不能删除键(即type)
我使用的代码
yamlFile, err := ioutil.ReadFile("test.yaml")
//Here I parse the file to the model I’ve which is working fine
err := yaml.Unmarshal([]byte(yamlFile), &obj)
if err != nil {
log.Printf("Yaml file is not valid, Error: " + err.Error())
os.Exit(-1)
}
现在我可以循环像
这样的属性了obj := models.OBJ{}
for i, element := range obj.Mod {
//Here I was able to change property data
mta.Mod[i].Name = "test123"
但不确定在写回 FS 时如何省略 type 的整个属性。
我使用这个操作系统: https://github.com/go-yaml/yaml/tree/v2
【问题讨论】:
-
你是怎么解决这个问题的?
-
@aerokite - 有你的建议 :)
标签: go struct type-conversion