美文网首页
YAML和JSON互相转换

YAML和JSON互相转换

作者: 大鹏之动 | 来源:发表于2019-03-04 13:57 被阅读0次

    脚本说明:

    使用Kebernetes最多的使用的是yaml语言,这种语言刚使用比较难懂,最好是先转换为json,下面的脚本可以对json和yaml语言互相转换。

    #!/usr/bin/env python
    #coding:utf8
    #
    import sys,json,os
    reload(sys)
    sys.setdefaultencoding('utf8')
    import json,yaml
    import argparse
    parser = argparse.ArgumentParser(description='json和yaml互相转换工具!')
    parser.add_argument('filename')
    args = parser.parse_args()
    txt=""
    if os.path.isfile(args.filename):
        with open(args.filename,'r') as f:
            for a in f.readlines():
                txt=txt+a
    else:
        print "%s is not file" % (args.filename)
        parser.print_help()
        sys.exit()
    print "##########################################################################################"
    print "Yaml format: "
    print yaml.dump(yaml.load(txt),default_flow_style=False)
    print "##########################################################################################"
    print "Json format: "
    print json.dumps(yaml.load(txt),indent=2,sort_keys=True)
    
    

    安装yaml模块

    
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py
    python PyYAML-3.13
    
    

    将json转换为yaml

    
    [root@master opt]# python yaml2json.py dashboard-adminuser.yaml 
    ##########################################################################################
    Yaml format: 
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kube-system
    
    ##########################################################################################
    Json format: 
    {
      "apiVersion": "rbac.authorization.k8s.io/v1", 
      "kind": "ClusterRoleBinding", 
      "metadata": {
        "name": "admin-user"
      }, 
      "roleRef": {
        "apiGroup": "rbac.authorization.k8s.io", 
        "kind": "ClusterRole", 
        "name": "cluster-admin"
      }, 
      "subjects": [
        {
          "kind": "ServiceAccount", 
          "name": "admin-user", 
          "namespace": "kube-system"
        }
      ]
    }
    

    相关文章

      网友评论

          本文标题:YAML和JSON互相转换

          本文链接:https://www.haomeiwen.com/subject/sexiuqtx.html