schemaconvertor提供了一种使用schema来转换对象的方法,通过schema,可以指定该对象序列化的部分和对应的类型,其结果可以进一步序列化为json。
安装:pip install schemaconvertor
版本:0.3
假设有个简单的数据类型User
:
from collections import namedtuple
User = namedtuple("User", ["name", "password", "age"])
可以通过指定schema来转换对象:
schema = {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
}
}
}
user = User(name="lyc", password="schemaconvertor", age="24")
from schemaconvertor.convertor import convert_by_schema
print convert_by_schema(user, schema)
输出:
{'age': 24, 'name': 'lyc'}
更多示例:demo 0.3
version字段标识着Schema版本。
description字段标识着Schema说明。
encoding指定Schema的string字段的字符编码,默认是utf-8。
decoderrors指定Schema的string字段解码失败的操作,用于str.decode
的第二个参数,主要有strict,ignore,replace三种可选参数,默认是strict
。
type字段指定对应待转换数据的最终类型,主要类型对应如下表:
type | Python |
---|---|
string | unicode |
object | dict |
integer | int |
float | float |
number | int/float |
boolean | bool |
dict | dict |
array | list |
null | NoneType |
raw | object |
type字段直接影响转换行为,因此基本上每个Schema都需指定type,为简化表达,当一个Schema仅有type一项时,可以直接使用type的值简化表示为Schema。
当前仅在声明typeOf字段时可以不指定type,typeOf指示如何根据数据的类型选择对应的Schema。可以使用真实的Python类型或类型元组作为key(作为isinstance
的第二个参数)。
default字段仅用在typeOf字段内,用于指示缺省类型表示的Schema。
items字段仅在type为array时生效,用于描述序列中的每一项对应的Schema。
items字段仅在type为dict或object时生效,指定给出的项的Schema(没有指定的项不会处理)。
items字段仅在type为dict或object时生效,指定符合给定的正则表达式的项的Schema(使用re.search
匹配)。
list
等非hashable类型。ObjAsDictAdapter
将数据包装成类dict
对象进行转换的。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型