Python类到Yaml / JSON [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python类到Yaml / JSON [关闭]相关的知识,希望对你有一定的参考价值。
我对YAML / JSON不满意。
我遗失了遗产。
是否可以将Python类的层次结构导出为YAML / JSON?
这样我就可以使用自己喜欢的IDE和自动完成来构建我的数据结构。
在我的情况下,结果应该输入SaltStack。但这根本与配置管理无关,因为结果应该是普通的YAML / JSON。
我想将类导出到yaml。总会有类,从不实例。至少这就是我今天的想法。
我认为使用这个约束是有意义的:除了属性之外,类不会有方法。并且只有get-properties,而不是set-properties。
我从jazxswpoi那里拿了json的例子
https://www.json2yaml.com/
以下是python语法中上面json的一个示例:
{
"json": [
"rigid",
"better for data interchange"
],
"yaml": [
"slim and flexible",
"better for configuration"
],
"object": {
"key": "value",
"array": [
{
"null_value": null
},
{
"boolean": true
},
{
"integer": 1
}
]
},
"paragraph": "Blank lines denote
paragraph breaks
",
"content": "Or we
can auto
convert line breaks
to save space"
}
上面只是简单介绍如何使用python类创建数据结构。
你可以使用class json:
data = ['rigi', 'better for data interchange']
class yaml:
data = ['slim and flexible', 'better for configuration']
class object:
key = 'value'
array = [dict(null_value=None), dict(boolean=True), dict(integer=1)]
class paragraph:
data = 'Blank lines denote
paragraph breaks
'
class content:
data = '''Or we
can auto
convert line breaks
to save space'''
。请注意,使用pickle的安全警告也适用于jsonpickle。如果要允许对任意对象进行de / serial化,则必须处理安全性问题。
使用jsonpickle,扩展它来编写自定义类来解析Python类,如下所示。
由于您可以使用不同类型的对象,建议使用自定义编码器。
对于前者
json.Encoder
我不确定你是否在寻找json.dumps(str)
# TypeError: Object of type 'mappingproxy' is not JSON serializable
jsonpickle
和
jsonpickle.dumps(str)
>>'{"py/type": "__builtin__.str"}'
jsonpickle.dumps(json.dumps)
>>'{"py/function": "json.dumps"}'
从dict_str转储到YAML。
import json
class ClassEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, type1):
return obj.conversion
# .type2
# .
# .type3
# .
# .so on
# .
return json.JSONEncoder.default(self, obj)
dict_str = json.dumps(class_object, cls=ClassEncoder)
以上是关于Python类到Yaml / JSON [关闭]的主要内容,如果未能解决你的问题,请参考以下文章