用于python的超高速json编解码器

ujson-bedframe的Python项目详细描述


ultra json是一个超高速的json编码器和解码器,用纯c编写,绑定python 2.5+和3。

<> P>一个更加无痛的日常C/C++ JSON解码器体验请基于UpjJSON签出ujson4c

要安装它,只需像往常一样运行pip:

$ pip install ujson

用法

可以作为python的大多数其他json解析器的替换:

>>> import ujson
>>> ujson.dumps([{"key": "value"}, 81, True])
'[{"key":"value"},81,true]'
>>> ujson.loads("""[{"key": "value"}, 81, true]""")
[{u'key': u'value'}, 81, True]

编码器选项

编码HTML字符

用于将“不安全”HTML字符特殊编码为更安全的Unicode序列。默认值为false:

>>> ujson.dumps("<script>John&Doe", encode_html_chars=True)
'"\\u003cscript\\u003eJohn\\u0026Doe"'

确保使用ascii

将输出限制为ascii并转义127以上的所有扩展字符。默认值为true。如果您的终端格式支持utf-8,强烈建议将此选项设置为false以节省空间:

>>> ujson.dumps(u"\xe5\xe4\xf6")
'"\\u00e5\\u00e4\\u00f6"'
>>> ujson.dumps(u"\xe5\xe4\xf6", ensure_ascii=False)
'"\xc3\xa5\xc3\xa4\xc3\xb6"'

双精度

控制要为双精度值或十进制值编码的小数位数。默认值为9:

>>> ujson.dumps(math.pi)
'3.1415926536'
>>> ujson.dumps(math.pi, double_precision=1)
'3.1'
>>> ujson.dumps(math.pi, double_precision=0)
'3'
>>> ujson.dumps(math.pi, double_precision=4)
'3.1416'

解码器选项

精确浮点值

设置为在将字符串解码为双倍值时启用更高精度(strTod)函数。默认设置是使用快速但不太精确的内置功能:

>>> ujson.loads("4.56")
4.5600000000000005
>>> ujson.loads("4.56", precise_float=True)
4.5599999999999996

基准

ultrajson调用/秒,与其他三个流行的json解析器相比,每种解析器的性能都有所提高。

试验机:

Linux版本2.6.32-131.0.15.el6.x86_64

版本:

  • ujson:1.21
  • simplejson:2.6.2
  • 中日韩:1.05
  • yajl:0.3.5
  • Python:Python2.6.6(r266:842922011年7月20日,10:22:43)
ujsonsimplejsoncjsonyajl
Array with 256 utf-8 strings
Encode4090,74899,3983,863189,86
4,5548,781,28
Decode863,29586,15201,61352,48
1,474,282,45
Medium complex object
Encode9750,371377,151512,063341,91
7,086,452,92
Decode5576,754247,163587,832850,13
1,311,551,96
Array with 256 strings
Encode17998,0112954,468715,0215924,35
1,392,071,13
Decode14540,7119696,1314908,469547,14
0,740,981,52
Array with 256 doubles
Encode2185,201466,871956,993421,10
1,491,120,64
Decode16062,018990,509743,408331,74
1,791,651,93
Array with 256 True values
Encode69767,6025202,5641145,9964330,76
2,771,701,08
Decode91416,0256439,9754918,0942786,02
1,621,662,14
Array with 256 dict{string, int} pairs
Encode11307,541830,452720,907725,56
6,184,161,46
Decode8695,947572,896076,715231,32
1,151,431,66
Dict with 256 arrays with 256 dict
Encode37,764,8810,4927,62
7,743,601,37
Decode17,7015,5611,2512,00
1,141,571,47

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

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径