跳转到主要内容

围绕序列化库的便利包装,用于处理常见任务。

项目描述

https://img.shields.io/pypi/v/basicserial.svg https://img.shields.io/pypi/l/basicserial.svg https://github.com/jayclassless/basicserial/workflows/Test/badge.svg

概述

这看起来熟悉吗?

>>> 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一起工作时,可以为您执行以下操作

  • 自动将以下类型序列化为常识性表示

    类型

    JSON

    YAML

    TOML

    集合

    数组

    序列

    数组

    冻结集合

    数组

    序列

    数组

    十进制数

    数字

    浮点数

    浮点数

    分数

    字符串

    字符串

    字符串

    日期

    字符串(ISO 8601)

    时间戳

    字符串(ISO 8601)

    时间

    字符串(ISO 8601)

    字符串(ISO 8601)

    字符串(ISO 8601)

    datetime

    字符串(ISO 8601)

    时间戳

    字符串(ISO 8601)

    复数

    字符串

    字符串

    字符串

    OrderedDict

    对象

    映射

    键/值

    defaultdict

    对象

    映射

    键/值

    namedtuple

    对象

    映射

    键/值

    UserDict

    对象

    映射

    键/值

    UserList

    数组

    序列

    数组

    UserString

    字符串

    字符串

    字符串

    UUID

    字符串

    字符串

    字符串

  • 可以根据其类型适当序列化 Enum 成员。

  • 可以自动将日期、时间和datetime反序列化为原生Python对象。

  • 提供简单的标志以生成“美观”的字符串。

用法

要使用此包,请从 PyPI 安装它(pip install basicserial)。然后,确保您安装了 basicserial 想要使用的序列化包。

basicserial 将自动查找一个包来使用,但如果您想使用特定的包,可以通过将包名通过函数的 pkg 参数来指定。

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'}

YAML

>>> 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'}

TOML

>>> 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'}

许可证

该项目以 MIT 许可协议 发布。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪一个,请了解有关 安装包 的更多信息。

源分发

basicserial-1.2.1.tar.gz (10.5 kB 查看哈希

上传时间

构建分发

basicserial-1.2.1-py3-none-any.whl (10.6 kB 查看哈希

上传时间 Python 3

支持者: