序列化库周围的方便包装器,用于处理常见任务。
basicserial的Python项目详细描述
Overview
这看起来眼熟吗?
>>> import json >>> from datetime import date >>> MY_DATA = {'foo': 123, 'bar': date(2018, 5, 22)} >>> json.dumps(MY_DATA) Traceback (most recent call last): ... TypeError: datetime.date(2018, 5, 22) is not JSON serializable
当序列化工具不知道如何处理 自定义类,但如果它们不处理内置的和/或 通用数据类型。因此,basicserial诞生了。
这个包是通用序列化工具的瘦包装,可以 在使用json、yaml和toml时,请执行以下操作:
自动将以下类型序列化为常识表示:
Type JSON YAML TOML set array sequence array frozenset array sequence array Decimal number float float Fraction string string string date string (ISO 8601) timestamp string (ISO 8601) time string (ISO 8601) string (ISO 8601) string (ISO 8601) datetime string (ISO 8601) timestamp string (ISO 8601) complex string string string OrderedDict object map key/value defaultdict object map key/value namedtuple object map key/value UserDict object map key/value UserList array sequence array UserString string string string 可以自动将日期、时间和日期时间反序列化为本机 python对象。
提供生成“漂亮”字符串的简单标志。
Usage
要使用这个包,请从pypi(pip install basicserial)安装它。然后, 如果您想使用yaml或toml,还需要安装一个 提供该功能(对于yamlbasicserial支持PyYAML和ruamel.yaml,对于toml支持toml或pytoml)。basicserial将使用python的 要处理的内置json模块 json。
json:
>>> print(basicserial.to_json(MY_DATA)) {"foo": 123, "bar": "2018-05-22"} >>> print(basicserial.to_json(MY_DATA, pretty=True)) { "foo": 123, "bar": "2018-05-22" } >>> basicserial.from_json(basicserial.to_json(MY_DATA)) {u'foo': 123, u'bar': datetime.date(2018, 5, 22)} >>> basicserial.from_json(basicserial.to_json(MY_DATA), native_datetimes=False) {u'foo': 123, u'bar': u'2018-05-22'}
山药:
>>> print(basicserial.to_yaml(MY_DATA)) {bar: 2018-05-22, foo: 123} >>> print(basicserial.to_yaml(MY_DATA, pretty=True)) bar: 2018-05-22 foo: 123 >>> basicserial.from_yaml(basicserial.to_yaml(MY_DATA)) {u'foo': 123, u'bar': datetime.date(2018, 5, 22)} >>> basicserial.from_yaml(basicserial.to_yaml(MY_DATA), native_datetimes=False) {'foo': 123, 'bar': u'2018-05-22'}
桶:
>>> print(basicserial.to_toml(MY_DATA)) foo = 123 bar = "2018-05-22" >>> print(basicserial.to_toml(MY_DATA, pretty=True)) foo = 123 bar = "2018-05-22" >>> basicserial.from_toml(basicserial.to_toml(MY_DATA)) {u'foo': 123, u'bar': datetime.date(2018, 5, 22)} >>> basicserial.from_toml(basicserial.to_toml(MY_DATA), native_datetimes=False) {u'foo': 123, u'bar': u'2018-05-22'}
License
这个项目是根据MIT License的条款发布的。