UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3.
For a more painless day to day C/C++ JSON decoder experience please checkout ujson4c, based on UltraJSON.
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'
escape_forward_slashes
Controls whether forward slashes (/) are escaped. Default is True:
>>> ujson.dumps("http://esn.me")
'"http:\/\/esn.me"'
>>> ujson.dumps("http://esn.me", escape_forward_slashes=False)
'"http://esn.me"'
indent
Controls whether indention (“pretty output”) is enabled. Default is 0 (disabled):
>>> ujson.dumps({"foo": "bar"})
'{"foo":"bar"}'
>>> ujson.dumps({"foo": "bar"}, indent=4)
{
"foo":"bar"
}
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 |
Metadata
Release files for ujson 1.34
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distributions (sdists)
| File | Size | Uploaded | |
|---|---|---|---|
| ujson-1.34.zip | 199.6 kB | Details | |
| ujson-1.34.tar.gz | 188.6 kB | Details |
Release files / ujson-1.34.zip
| Download URL | ujson-1.34.zip |
|---|---|
| Size | 199.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f015962b89c67d28c5fe2ed3800e1713300d22a100a46a1a1290c543d954651
|
|
BLAKE2b-256 checksum How to use checksums |
b9ea69057e5a3ce255d9b6ff848c9423c09ae904be37c198bb4ef33618c0031d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / ujson-1.34.tar.gz
| Download URL | ujson-1.34.tar.gz |
|---|---|
| Size | 188.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d09807685ecf2eed3b68985aca4f7ad619eadfae9054d1e23a20c54ea861102
|
|
BLAKE2b-256 checksum How to use checksums |
48c9492bf0c33a7df231b97669b9ecb6bbf7b12ecaf06f66009b479c8ce2e629
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |