UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3.
To install it just run Pip as usual:
$ pip install ujson
Usage
May be used as a drop in replacement for most other JSON parsers for Python:
>>> import ujson
>>> ujson.dumps([{"key": "value"}, 81, True])
'[{"key":"value"},81,true]'
>>> ujson.loads("""[{"key": "value"}, 81, true]""")
[{u'key': u'value'}, 81, True]
Encoder options
encode_html_chars
Used to enable special encoding of “unsafe” HTML characters into safer Unicode sequences. Default is false:
>>> ujson.dumps("<script>John&Doe", encode_html_chars=True)
'"\\u003cscript\\u003eJohn\\u0026Doe"'
ensure_ascii
Limits output to ASCII and escapes all extended characters above 127. Default is true. If your end format supports UTF-8 setting this option to false is highly recommended to save space:
>>> ujson.dumps(u"\xe5\xe4\xf6") '"\\u00e5\\u00e4\\u00f6"' >>> ujson.dumps(u"\xe5\xe4\xf6", ensure_ascii=False) '"\xc3\xa5\xc3\xa4\xc3\xb6"'
double_precision
Controls how many decimals to encode for double or decimal values. Default is 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'
Decoders options
precise_float
Set to enable usage of higher precision (strtod) function when decoding string to double values. Default is to use fast but less precise builtin functionality:
>>> ujson.loads("4.56")
4.5600000000000005
>>> ujson.loads("4.56", precise_float=True)
4.5599999999999996
Benchmarks
UltraJSON calls/sec compared to three other popular JSON parsers with performance gain specified below each.
Test machine:
Linux version 2.6.32-131.0.15.el6.x86_64
Versions:
ujson: 1.21
simplejson: 2.6.2
cjson: 1.05
yajl: 0.3.5
Python: Python 2.6.6 (r266:84292, Jul 20 2011, 10:22:43)
ujson |
simplejson |
cjson |
yajl |
|
|---|---|---|---|---|
Array with 256 utf-8 strings |
||||
Encode |
4090,74 |
899,39 |
83,86 |
3189,86 |
4,55 |
48,78 |
1,28 |
||
Decode |
863,29 |
586,15 |
201,61 |
352,48 |
1,47 |
4,28 |
2,45 |
||
Medium complex object |
||||
Encode |
9750,37 |
1377,15 |
1512,06 |
3341,91 |
7,08 |
6,45 |
2,92 |
||
Decode |
5576,75 |
4247,16 |
3587,83 |
2850,13 |
1,31 |
1,55 |
1,96 |
||
Array with 256 strings |
||||
Encode |
17998,01 |
12954,46 |
8715,02 |
15924,35 |
1,39 |
2,07 |
1,13 |
||
Decode |
14540,71 |
19696,13 |
14908,46 |
9547,14 |
0,74 |
0,98 |
1,52 |
||
Array with 256 doubles |
||||
Encode |
2185,20 |
1466,87 |
1956,99 |
3421,10 |
1,49 |
1,12 |
0,64 |
||
Decode |
16062,01 |
8990,50 |
9743,40 |
8331,74 |
1,79 |
1,65 |
1,93 |
||
Array with 256 True values |
||||
Encode |
69767,60 |
25202,56 |
41145,99 |
64330,76 |
2,77 |
1,70 |
1,08 |
||
Decode |
91416,02 |
56439,97 |
54918,09 |
42786,02 |
1,62 |
1,66 |
2,14 |
||
Array with 256 dict{string, int} pairs |
||||
Encode |
11307,54 |
1830,45 |
2720,90 |
7725,56 |
6,18 |
4,16 |
1,46 |
||
Decode |
8695,94 |
7572,89 |
6076,71 |
5231,32 |
1,15 |
1,43 |
1,66 |
||
Dict with 256 arrays with 256 dict |
||||
Encode |
37,76 |
4,88 |
10,49 |
27,62 |
7,74 |
3,60 |
1,37 |
||
Decode |
17,70 |
15,56 |
11,25 |
12,00 |
1,14 |
1,57 |
1,47 |
Release files for ujson 1.30
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ujson-1.30.zip | 193.8 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ujson-1.30.win32-py3.3.exe | Details | |||
| ujson-1.30.win32-py2.7.exe | Details | |||
| ujson-1.30.win32-py2.6.exe | Details |
Total release size: 852.9 kB
Release files / ujson-1.30.zip
| Download URL | ujson-1.30.zip |
|---|---|
| Size | 193.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
489a55781a50126b0af12726bde50857b82fe5bbe0e5eb1bd37abe39da578d5f
|
|
BLAKE2b-256 checksum How to use checksums |
c58304e9b6d9cd3bcfe1cd99c278efdeccfa24d7c2fe18e2aff8d28ca8a9a1b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / ujson-1.30.win32-py3.3.exe
| Download URL | ujson-1.30.win32-py3.3.exe |
|---|---|
| Size | 216.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8248f75296c8139869169c5504cac49ac6a5b04c2187ec3ee2025cd9e3ea144f
|
|
BLAKE2b-256 checksum How to use checksums |
ad689a2792c92c3c59a012bcbda0404be84ac852dafd49a98819a5df13d51fe1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / ujson-1.30.win32-py2.7.exe
| Download URL | ujson-1.30.win32-py2.7.exe |
|---|---|
| Size | 221.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa3c9a6554a5b0b9f91f01ed936db09dae87f3b4fc126612c431bfec0e22f498
|
|
BLAKE2b-256 checksum How to use checksums |
c3bec654aca4b5231767dba10cb790b3d22d471ea4b520b0220acbe495ed59b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / ujson-1.30.win32-py2.6.exe
| Download URL | ujson-1.30.win32-py2.6.exe |
|---|---|
| Size | 221.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0212678bfd24e656d55474c82b33c8067ea12426cf0a6acccbca1c3e94294860
|
|
BLAKE2b-256 checksum How to use checksums |
1cac822f3176d7cd688cca919b8e4772ae6aac309189ddabc3501807fafe4a3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |