说魔法其实也可以说是个邪道做法,毕竟我主要玩儿PHP,Go接触较少,结构体啊分片数组啥的数据结构领悟还不够深入,所以碰到复杂的yaml配置文件需要先声明好结构体才能正确初始化好配置的时候,会感觉有些困难。
实践中因为不熟悉,常想是否有更简单的办法呢?后来脑子抽风,想到一个邪道做法。
原始yaml:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
branch:
- key: aaa
name: 测试
- key: bbb
name: 测试
test:
key1: bbb
key2: bbb
然后去Online YAML Parser转为json核对数据结构是否正确:
输出的json为:
{
"test": {
"key2": "bbb",
"key1": "bbb"
},
"kind": "Secret",
"apiVersion": "v1",
"branch": [
{
"name": "\u6d4b\u8bd5",
"key": "aaa"
},
{
"name": "\u6d4b\u8bd5",
"key": "bbb"
}
],
"metadata": {
"name": "mysecret"
}
}
接下来,使用Golang: Convert JSON in to a useful struct.把json转为结构体:
type MyJsonName struct {
APIVersion string `json:"apiVersion"`
Branch []struct {
Key string `json:"key"`
Name string `json:"name"`
} `json:"branch"`
Kind string `json:"kind"`
Metadata struct {
Name string `json:"name"`
} `json:"metadata"`
Test struct {
Key1 string `json:"key1"`
Key2 string `json:"key2"`
} `json:"test"`
}
呐,把json替换为yaml就是config可以初始化声明时使用的结构体了。
菜鸡自有菜鸡的邪道魔法,如此依赖,复杂的结构体声明起来也事半功倍。
当然,如果你有更好的方法,望不吝赐教。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。