时间:2020-10-19来源:www.pcxitongcheng.com作者:电脑系统城
Json To Dict
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ; print (jsonData) print ( type (jsonData)) text = json.loads(jsonData) print (text) print ( type (text)) ####################### { "a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 , "e" : 5 } < class 'str' > { 'a' : 1 , 'b' : 2 , 'c' : 3 , 'd' : 4 , 'e' : 5 } < class 'dict' > |
Dict To Json
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json textDict = { "a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 , "e" : 5 } print (textDict) print ( type (textDict)) # 字典转化为json textJson = json.dumps(textDict) print (textJson) print ( type (textJson)) ######################## { 'a' : 1 , 'b' : 2 , 'c' : 3 , 'd' : 4 , 'e' : 5 } < class 'dict' > { "a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 , "e" : 5 } < class 'str' > |
Dict To Yaml
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import yaml dictText = { "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" } ] } print ( type (dictText)) yamlText = yaml.dump(dictText) print (yamlText) print ( type (yamlText)) #############################3 < class 'dict' > 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 < class 'str' > |
Json To Yaml
Json -> Dict -> Yaml
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import json,yaml jsonData = '{"listDict":{"a":1,"b":2,"c":3,"d":4,"e":5}}' ; print (jsonData) print ( type (jsonData)) # Json -> Dict text = json.loads(jsonData) print (text) print ( type (text)) # Dict -> Yaml textYaml = yaml.dump(text) print (textYaml) print ( type (textYaml)) ############################# { "listDict" :{ "a" : 1 , "b" : 2 , "c" : 3 , "d" : 4 , "e" : 5 }} < class 'str' > { 'listDict' : { 'a' : 1 , 'b' : 2 , 'c' : 3 , 'd' : 4 , 'e' : 5 }} < class 'dict' > listDict: a: 1 b: 2 c: 3 d: 4 e: 5 < class 'str' > |
Yaml -> Dict
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import yaml yamlText = ''' 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''' print (yamlText) print ( type (yamlText)) # Yaml -> Dict dictText = yaml.load(yamlText,Loader = yaml.FullLoader) print (dictText) print ( type (dictText)) ############################# 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 < class 'str' > { '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' }]} < class 'dict' > |
关于 yaml -> dict 需要注意
yaml 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import yaml yamlText = ''' 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''' print (yamlText) print ( type (yamlText)) # yaml -> dict 没有设置 ,Loader=yaml.FullLoader 执行后如下含有警告 dictText = yaml.load(yamlText) print (dictText) print ( type (dictText)) ######################### 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 < class 'str' > / Users / yyj / Desktop / Project / HelloBike / TimeCalc / pydict2json / dict2json.py: 88 : YAMLLoadWarning: calling yaml.load() without Loader = ... is deprecated, as the default Loader is unsafe. Please read https: / / msg.pyyaml.org / load for full details. dictText = yaml.load(yamlText) { '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' }]} < class 'dict' > |
1、警告提示
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default
Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
2.主要原因
yaml 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数
3.解决方法
1.yaml.load(f, Loader=yaml.FullLoader)
2.yaml.warnings({'YAMLLoadWarning': False}) # 全局设置警告,不推荐
Loader的几种加载方式
至此,Yaml 、Json 、Dict 之间的转化 介绍完了
以上就是python Yaml 、Json 、Dict 之间的转化的详细内容,更多关于python Yaml 、Json 、Dict的资料请关注脚本之家其它相关文章!
2023-03-17
python flask项目打包成docker镜像发布的过程2023-03-17
python调试模块ipdb详解2023-03-17
python使用openai生成图像的超详细教程python cron定时任务触发接口自动化巡检 apscheduler报错:Run time of job …… next run at: ……)” was missed by misfire_grace_time参数 找到任务超时的根本原因...
2023-03-15