jsonfile-以json格式增量写入文件。
jsonfile的Python项目详细描述
jsonfile-增量生成json
pip install jsonfile-PyPI link
增量意味着,在大多数地方,您可以发送一个完整的python 对象,或者一次构建一个片段。例如,让我们构建json结构 [3, {"cool": true, "awesome": [1,2,3,4,5]}]:
>>> import jsonfile >>> jp = jsonfile.JsonProto() >>> jp.start_list() '[' >>> jp.list_item(3) '3' >>> jp.start_dict() ',{' >>> jp.dict_item('cool', True) '"cool":true' >>> jp.dict_key('awesome') ',"awesome"' >>> jp.dict_value([1,2,3,4,5]) ':[1, 2, 3, 4, 5]' >>> jp.finish_all() '}]'
使用了JsonProto对象的sans io版本,它只返回 应该写入输出的文本。如果您正在写入 普通的同步上下文,也可以使用JsonWriter对象,它 会稍微方便一些:
>>> import io >>> dest = io.StringIO() >>> import jsonfile >>> jw = jsonfile.JsonWriter(dest) >>> jw.start_list() >>> jw.list_item(3) >>> jw.list_item({'things': 'stuff'}) >>> jw.start_dict() >>> jw.dict_item('cool', True) >>> jw.dict_key('awesome') >>> jw.dict_value([1,2,3,4,5]) >>> jw.finish_all() >>> dest.getvalue() '[3,{"things": "stuff"},{"cool":true,"awesome":[1, 2, 3, 4, 5]}]'
因为底层的JsonProto不执行IO,所以应该很容易 在异步上下文中运行良好的JsonWriter版本。
捕捉到许多类型的错误:在根级别有多个对象 使用字典中的列表项等文件。
待办事项:
- 允许指定自己的jsonencoder以用于完整的对象。
- 做缩进。
- 实现AsyncJsonWriter
- 防止生成非法json的更好的测试(例如 钥匙)。
- Python2支持吗?