Skip to main content

用于 Python 的超快速 JSON 编码器和解码器

项目描述

这是 ultrajson 1.35 的兼容性分支,旨在通过将 c 扩展名重命名为“ujson1”来与新版本共存。

主线 Ultrajson 3.x 的开发已在 https://github.com/ultrajson/ultrajson中恢复,请在此处发送拉取请求,除非绝对有必要让您退出 1.x。

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

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 (189.8 kB 查看哈希

已上传 source