用于 Python 的超快速 JSON 编码器和解码器
项目描述
这是 ultrajson 1.35 的兼容性分支,旨在通过将 c 扩展名重命名为“ujson1”来与新版本共存。
主线 Ultrajson 3.x 的开发已在 https://github.com/ultrajson/ultrajson中恢复,请在此处发送拉取请求,除非绝对有必要让您退出 1.x。
UltraJSON 是一个超快速的 JSON 编码器和解码器,用纯 C 语言编写,绑定了 Python 2.5+ 和 3。
如需更轻松的日常 C/C++ JSON 解码器体验,请查看基于 UltraJSON 的 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]
编码器选项
encode_html_chars
用于将“不安全”的 HTML 字符特殊编码为更安全的 Unicode 序列。默认为假:
>>> 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_slashes
控制是否转义正斜杠 ( / )。默认为真:
>>> 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 2015 年 10 月 7 日星期三 15:20:27 UTC
版本:
CPython 2.7.6(默认,2015 年 6 月 22 日,17:58:13)[GCC 4.8.2]
泡罩:1.3.6
简单的json:3.8.1
ujson:1.34(0c52200eb4e2d97e548a765d5f089858c41967b0)
亚吉尔:0.3.5
ujson |
亚吉尔 |
简单的json |
json |
|
|---|---|---|---|---|
具有 256 个双精度数的数组 |
||||
编码 |
3508.19 |
5742.00 |
3232.38 |
3309.09 |
解码 |
25103.37 |
11257.83 |
11696.26 |
11871.04 |
包含 256 个 UTF-8 字符串的数组 |
||||
编码 |
3189.71 |
2717.14 |
2006.38 |
2961.72 |
解码 |
1354.94 |
630.54 |
356.35 |
344.05 |
包含 256 个字符串的数组 |
||||
编码 |
18127.47 |
12537.39 |
12541.23 |
20001.00 |
解码 |
23264.70 |
12788.85 |
25427.88 |
9352.36 |
中等复杂对象 |
||||
编码 |
10519.38 |
5021.29 |
3686.86 |
4643.47 |
解码 |
9676.53 |
5326.79 |
8515.77 |
3017.30 |
具有 256 个真值的数组 |
||||
编码 |
105998.03 |
102067.28 |
44758.51 |
60424.80 |
解码 |
163869.96 |
78341.57 |
110859.36 |
115013.90 |
包含 256 个 dict{string, int} 对的数组 |
||||
编码 |
13471.32 |
12109.09 |
3876.40 |
8833.92 |
解码 |
16890.63 |
8946.07 |
12218.55 |
3350.72 |
具有 256 个数组和 256 个 dict{string, int} 对的字典 |
||||
编码 |
50.25 |
46.45 |
13.82 |
29.28 |
解码 |
33.27 |
22.10 |
27.91 |
10.43 |
具有 256 个数组和 256 个 dict{string, int} 对的字典,输出排序后的键 |
||||
编码 |
27.19 |
7.75 |
2.39 |
|
复杂对象 |
||||
编码 |
577.98 |
387.81 |
470.02 |
|
解码 |
496.73 |
234.44 |
151.00 |
145.16 |
版本:
CPython 3.4.3(默认,2015 年 10 月 14 日,20:28:29)[GCC 4.8.4]
泡罩:1.3.6
简单的json:3.8.1
ujson:1.34(0c52200eb4e2d97e548a765d5f089858c41967b0)
亚吉尔:0.3.5
ujson |
亚吉尔 |
简单的json |
json |
|
|---|---|---|---|---|
具有 256 个双精度数的数组 |
||||
编码 |
3477.15 |
5732.24 |
3016.76 |
3071.99 |
解码 |
23625.20 |
9731.45 |
9501.57 |
9901.92 |
包含 256 个 UTF-8 字符串的数组 |
||||
编码 |
1995.89 |
2151.61 |
1771.98 |
1817.20 |
解码 |
1425.04 |
625.38 |
327.14 |
305.95 |
包含 256 个字符串的数组 |
||||
编码 |
25461.75 |
12188.64 |
13054.76 |
14429.81 |
解码 |
21981.31 |
17014.22 |
23869.48 |
22483.58 |
中等复杂对象 |
||||
编码 |
10821.46 |
4837.04 |
3114.04 |
4254.46 |
解码 |
7887.77 |
5126.67 |
4934.60 |
6204.97 |
具有 256 个真值的数组 |
||||
编码 |
100452.86 |
94639.42 |
46657.63 |
60358.63 |
解码 |
148312.69 |
75485.90 |
88434.91 |
116395.51 |
包含 256 个 dict{string, int} 对的数组 |
||||
编码 |
11698.13 |
8886.96 |
3043.69 |
6302.35 |
解码 |
10686.40 |
7061.77 |
5646.80 |
7702.29 |
具有 256 个数组和 256 个 dict{string, int} 对的字典 |
||||
编码 |
44.26 |
34.43 |
10.40 |
21.97 |
解码 |
28.46 |
23.95 |
18.70 |
22.83 |
具有 256 个数组和 256 个 dict{string, int} 对的字典,输出排序后的键 |
||||
编码 |
33.60 |
6.94 |
22.34 |
|
复杂对象 |
||||
编码 |
432.30 |
351.47 |
379.34 |
|
解码 |
434.40 |
221.97 |
149.57 |
147.79 |
项目详情
ujson1-1.36.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 00792db47b0bad1edd680c72f3f5c101db0b861d64b506ce9629aa0758246e01 |
|
| MD5 | d95f913c2ece239cbda0c56454ee02e5 |
|
| 布莱克2-256 | fc214f49e23bb0a7d38f077dbdced7012a1ea0e66e5929abac7139f397587ace |