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

ujson的Python项目详细描述


https://travis-ci.org/esnme/ultrajson.svg?branch=master

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'

escape_forward_斜杠

控制是否转义正斜杠(/)。默认值为真:

>>> ujson.dumps("http://esn.me")
'"http:\/\/esn.me"'
>>> ujson.dumps("http://esn.me", escape_forward_slashes=False)
'"http://esn.me"'

缩进

控制是否启用缩进(“漂亮的输出”)。默认值为0(禁用):

>>> ujson.dumps({"foo": "bar"})
'{"foo":"bar"}'
>>> ujson.dumps({"foo": "bar"}, indent=4)
{
    "foo":"bar"
}

解码器选项

精确浮点值

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

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

试验机:

Linux 3.13.0-66-generic x86_64 108 ubuntu smp星期三10月7日15:20:27 UTC 2015

版本:

  • CPython 2.7.6(默认值,2015年6月22日,17:58:13)[GCC 4.8.2]
  • blist:1.3.6
  • SimpleJSON:3.8.1
  • ujson:1.34(0c52200eb4e2d97e548a765d5f089858c41967b0)
  • yajl:0.3.5
ujsonyajlsimplejsonjson
Array with 256 doubles
encode3508.195742.003232.383309.09
decode25103.3711257.8311696.2611871.04
Array with 256 UTF-8 strings
encode3189.712717.142006.382961.72
decode1354.94630.54356.35344.05
Array with 256 strings
encode18127.4712537.3912541.2320001.00
decode23264.7012788.8525427.889352.36
Medium complex object
encode10519.385021.293686.864643.47
decode9676.535326.798515.773017.30
Array with 256 True values
encode105998.03102067.2844758.5160424.80
decode163869.9678341.57110859.36115013.90
Array with 256 dict{string, int} pairs
encode13471.3212109.093876.408833.92
decode16890.638946.0712218.553350.72
Dict with 256 arrays with 256 dict{string, int} pairs
encode50.2546.4513.8229.28
decode33.2722.1027.9110.43
Dict with 256 arrays with 256 dict{string, int} pairs, outputting sorted keys
encode27.197.752.39
Complex object
encode577.98387.81470.02
decode496.73234.44151.00145.16

版本:

  • CPython 3.4.3(默认值,2015年10月14日,20:28:29)[GCC 4.8.4]
  • blist:1.3.6
  • SimpleJSON:3.8.1
  • ujson:1.34(0c52200eb4e2d97e548a765d5f089858c41967b0)
  • yajl:0.3.5
ujsonyajlsimplejsonjson
Array with 256 doubles
encode3477.155732.243016.763071.99
decode23625.209731.459501.579901.92
Array with 256 UTF-8 strings
encode1995.892151.611771.981817.20
decode1425.04625.38327.14305.95
Array with 256 strings
encode25461.7512188.6413054.7614429.81
decode21981.3117014.2223869.4822483.58
Medium complex object
encode10821.464837.043114.044254.46
decode7887.775126.674934.606204.97
Array with 256 True values
encode100452.8694639.4246657.6360358.63
decode148312.6975485.9088434.91116395.51
Array with 256 dict{string, int} pairs
encode11698.138886.963043.696302.35
decode10686.407061.775646.807702.29
Dict with 256 arrays with 256 dict{string, int} pairs
encode44.2634.4310.4021.97
decode28.4623.9518.7022.83
Dict with 256 arrays with 256 dict{string, int} pairs, outputting sorted keys
encode33.606.9422.34
Complex object
encode432.30351.47379.34
decode434.40221.97149.57147.79

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

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么