用于python的超高速json编码器和解码器。持续发展。

ujson-segfault的Python项目详细描述


Travis CI build status

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

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

$ pip install ujson-segfault

用法

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

>>>importujson>>>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"'

escape_forward_斜杠

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

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

允许

控件nan和inf数值被序列化。默认值是True。这与其他python json库一致,但不是有效的json:

>>>ujson.dumps(float("nan"))'NaN'>>>ujson.dumps(float("nan"),allow_nan=False)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>OverflowError:Invalidvaluewhenencodingdouble

基准

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

试验机:

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如何在Microsoft Office Word或Excel文档中查找突出显示的文本   Java反射:获取方法返回参数的类型   java根据从字符串解析的日期对ArrayList<String>进行排序   不带IDE JSONObject的json JAVA   Selenium检查属性是否包含java中字符串的一部分   java Hibernate在使用@PostConstruct时找不到绑定到线程的会话   java频繁访问对象属性会带来成本吗?   java如何使用spring boot从json更新数据   Android Studio中的java适当边距布局   java spring引导无法在spring测试类中注入spring服务   java在插入排序中删除重复项   如何在JAVA中重写异常类方法   java Guava缓存内存泄漏   多线程处理三个必须并行执行的任务completableFuture,如果其中任何一个在java中引发异常,则全部取消