通用二进制json编解码器

py-ubjson的Python项目详细描述


概述

这是基于draft-12规范的python v3.2+(和2.7+)Universal Binary JSON编码器/解码器。

安装/打包

# To get from PyPI
pip3 install py-ubjson

# To only build extension modules inline (e.g. in repository)
python3 setup.py build_ext -i

# To build & install globally
python3 setup.py install

# To skip building of extensions when installing (or building)PYUBJSON_NO_EXTENSION=1 python3 setup.py install

注释

用法

它的行为非常像python的内置JSON module,例如:

importubjsonencoded=ubjson.dumpb({u'a':1})decoded=ubjson.loadb(encoded)

note:只有python 2中的unicode字符串将被编码为字符串,普通的str将被编码为字节数组。

文档

importubsjonhelp(ubjson.dump)help(ubjson.load)

命令行实用程序

这将在json和ubjson格式之间进行转换:

python3 -mubjson
USAGE: ubjson (fromjson|tojson)(INFILE|-)[OUTFILE]

测试

静态

已经使用flake8pylint检查了这个库,使用了修改的配置-请参见pylint.rcflake8.cfg

单位

python3 -mvenv py
. py/bin/activate
pip install -U pip setuptools
pip install -e .[dev]

./coverage_test.sh

注意:有关其他要求,请参见coverage_test.sh

限制

  • 只有解码器支持no op类型。(这应该是一个协议级别而不是序列化级别的选项)具体来说,它是only允许出现在容器的开始或元素之间,而only允许出现在非类型容器中。(在类型化容器中,不可能区分编码元素和no-op。)
  • 强类型容器仅由解码器支持(除了forbytes/bytearray)而不是no-op。
  • 此时不支持编码器/解码器扩展。

为什么?

我在写作时意识到的唯一的实现(simpleubjson)有以下限制:

  • 不支持有效的二进制编码
  • 仅支持Draft-9
  • 只支持单独的python类型,而不支持实现接口的任何类型(例如mapping
  • 不以预期形式解码嵌套数组或对象
  • 缺少C扩展速度

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

推荐PyPI第三方库


热门话题
java创建猜谜游戏程序   JavaWebSocketContainer。connectToServer似乎挂起了   如何在java中中断函数   java c#socket client multiple BeginSend()未到达服务器   不可见的组件然后在Java中的窗格之间切换   java在应用程序类中使用静态接口安全吗?   java等待函数完成,直到回调到来   使用DataOutputStream时的java新行,Android   java服务对象的定义是什么?   基于视图的javahibernate复合密钥   java将varchar连接到char在JPA(oracle)中不起作用   如何在java中通过point类读取多个点?