序列化库周围的方便包装器,用于处理常见任务。

basicserial的Python项目详细描述


https://img.shields.io/pypi/v/basicserial.svghttps://img.shields.io/pypi/l/basicserial.svghttps://travis-ci.org/jayclassless/basicserial.svg?branch=masterhttps://coveralls.io/repos/github/jayclassless/basicserial/badge.svg?branch=master

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时,请执行以下操作:

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

    TypeJSONYAMLTOML
    setarraysequencearray
    frozensetarraysequencearray
    Decimalnumberfloatfloat
    Fractionstringstringstring
    datestring (ISO 8601)timestampstring (ISO 8601)
    timestring (ISO 8601)string (ISO 8601)string (ISO 8601)
    datetimestring (ISO 8601)timestampstring (ISO 8601)
    complexstringstringstring
    OrderedDictobjectmapkey/value
    defaultdictobjectmapkey/value
    namedtupleobjectmapkey/value
    UserDictobjectmapkey/value
    UserListarraysequencearray
    UserStringstringstringstring
  • 可以自动将日期、时间和日期时间反序列化为本机 python对象。

  • 提供生成“漂亮”字符串的简单标志。

Usage

要使用这个包,请从pypi(pip install basicserial)安装它。然后, 如果您想使用yaml或toml,还需要安装一个 提供该功能(对于yamlbasicserial支持PyYAMLruamel.yaml,对于toml支持tomlpytoml)。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的条款发布的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript问题:通过URL用网站数据填充Textview   java TabLayout Android,如何用几个标签填充整个屏幕宽度,并用大量标签滚动?   Eclipse Java运行的文件不再存在于我的工作区中   安装两个Java版本时,使用Java的windows链接不起作用   java将多个图形添加到单个JPanel   java Kafka ConsumerFactory,带有两个Desiarizer   使用反射更改java类超类   当一致性测试失败时,java有没有办法让堆栈跟踪显示在控制台中   java映射到基元类型的HashMap的快速替代方案是什么?   java关闭一个jframe所有剩余的打开jframe都将关闭。   java为什么不推荐“使用getString()获取设备标识符”?   java值比较和值赋值之间有什么性能差异吗?   Java实体数组到JavaScript数组   java使用流将一个列表转换为另一个列表   在JTree中保存对象,但更改显示的名称(java swing)?   java“Hello world”Android应用程序,文件尽可能少,没有IDE,只有文本编辑器   java在方法之间传递值   java如何为项目数组创建ParseQuery?