背景

golang想要解析yaml文件,基本上得先转结构体。那能不能使用一些简单的语法来直接访问呢?

比如我要访问kubernetes deployment的副本值:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.7.9
          ports:
            - containerPort: 80
spec.replicas

轮子

我写了一个解析动态yaml的库,地址在:https://github.com/oneslideicywater/go-yamlparser

可以使用简单的语法,直接访问到动态yaml的值:

func main() {

    // result:=ReadString("metadata.name","test.yaml")
    result:=ReadString("spec.template.spec.containers[0].name","test.yaml")
    fmt.Println(result)
    
    result2:=ReadInt("spec.replica","test.yaml")
    fmt.Println(result2)

}