YAML和JSON互相转换

2019-03-04  本文已影响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"
    }
  ]
}
上一篇下一篇

猜你喜欢

热点阅读