节俭转换工具:json2strift,thrift2json
thrift-converter的Python项目详细描述
节俭转换器
一个python实现的工具,用于在json和thrift之间进行转换。
安装
pip install thrift-converter
为什么要构建此工具:
- 类在thrift gen py中使用
thrift_spec()
进行反序列化,但是Enum
对象被简单地视为I32
,而在json中,它被存储为名称字符串。 set
在标准json中不是json可序列化的,我们可以将{'a', 'b', ..}
视为{None: ['a', 'b', ...]}
进行区分。
如何:
- 通过ptsd
- 通过递归遍历ast反序列化thrift对象。
待办事项:
- []从ptsd 学习
ply
其他
- introspection-of-thrift-enums-in-python最后讨论了等待精简升级(支持python枚举)
- thrift_json_decoder in twitter.common无法处理枚举
- thrift_json_convertor based on thriftpy太重
用法
示例:demo
importjsonfromthrift_converterimportJsonThriftConverter,ThriftJsonConverterthrift_file='demo.thrift'object_name='Group'json2thrift=JsonThriftConverter(thrift_file).convertthrift2json=ThriftJsonConverter(thrift_file).convertobj=gen_fake_obj()# Group(id=-1, worker_map={999: Worker(id=999, tasks=[Task(id=727, status=0, action=888, valid=True, msgs={'msg'})])})js=thrift2json(obj,object_name)js_str=json.dumps(js)# {"id": -1, "worker_map": {"999": {"id": 999, "tasks": [{"id": 727, "status": 0, "action": "UP", "valid": true, "msgs": {"null": ["msg"]}}]}}}obj=json2thrift(json.loads(js_str),object_name)# Group(id=-1, worker_map={999: Worker(id=999, tasks=[Task(id=727, status=0, action=888, valid=True, msgs={'msg'})])})