UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.7 and 3.5+.
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"'
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"
}
Benchmarks
UltraJSON calls/sec compared to other popular JSON parsers with performance gain specified below each.
Test machine:
Linux 5.0.0-1032-azure x86_64 #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020
Versions:
CPython 3.8.2 (default, Feb 28 2020, 14:28:43) [GCC 7.4.0]
nujson : 1.35.2
orjson : 2.6.1
simplejson: 3.17.0
ujson : 2.0.2
ujson |
nujson |
orjson |
simplejson |
json |
|
|---|---|---|---|---|---|
Array with 256 doubles |
|||||
encode |
22,082 |
4,282 |
76,975 |
5,328 |
5,436 |
decode |
24,127 |
34,349 |
29,059 |
14,174 |
13,822 |
Array with 256 UTF-8 strings |
|||||
encode |
3,557 |
2,528 |
24,300 |
3,061 |
2,068 |
decode |
2,030 |
2,490 |
931 |
406 |
358 |
Array with 256 strings |
|||||
encode |
39,041 |
31,769 |
76,403 |
16,615 |
16,910 |
decode |
25,185 |
24,287 |
34,437 |
32,388 |
27,999 |
Medium complex object |
|||||
encode |
10,382 |
11,427 |
32,995 |
3,959 |
5,275 |
decode |
9,785 |
9,796 |
11,515 |
5,898 |
7,200 |
Array with 256 True values |
|||||
encode |
114,341 |
101,039 |
344,256 |
62,382 |
72,872 |
decode |
149,367 |
151,615 |
181,123 |
114,597 |
130,392 |
Array with 256 dict{string, int} pairs |
|||||
encode |
13,715 |
14,420 |
51,942 |
3,271 |
6,584 |
decode |
12,670 |
11,788 |
12,176 |
6,743 |
8,278 |
Dict with 256 arrays with 256 dict{string, int} pairs |
|||||
encode |
50 |
54 |
216 |
10 |
23 |
decode |
32 |
32 |
30 |
20 |
23 |
Dict with 256 arrays with 256 dict{string, int} pairs, outputting sorted keys |
|||||
encode |
46 |
41 |
8 |
24 |
|
Complex object |
|||||
encode |
533 |
582 |
408 |
431 |
|
decode |
466 |
454 |
154 |
164 |
Metadata
Release files for ujson 2.0.3
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-2.0.3.tar.gz | 7.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.5+ x86-64 | Details |
| ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.5+ x86-64 | Details |
| ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.5+ x86-64 | Details |
| ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl | CPython 3.5 | CPython 3.5 pymalloc | Linux glibc 2.5+ x86-64 | Details |
| ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl | CPython 2.7 | CPython 2.7 pymalloc wide-unicode | Linux glibc 2.5+ x86-64 | Details |
| ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl | CPython 2.7 | CPython 2.7 pymalloc | Linux glibc 2.5+ x86-64 | Details |
Total release size: 8.2 MB
Release files / ujson-2.0.3.tar.gz
| Download URL | ujson-2.0.3.tar.gz |
|---|---|
| Size | 7.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bd2deffc983827510e5145fb66e4cc0f577480c62fe0b4882139f8f7d27ae9a3
|
|
BLAKE2b-256 checksum How to use checksums |
50d7dce3fc97329639bba9c8b3cdadaa51ae2757c9402d4b43ac5feb8b624792
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7
|
Release files / ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl |
|---|---|
| Size | 177.1 kB |
| Tags | CPython 3.8 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
2ab88e330405315512afe9276f29a60e9b3439187b273665630a57ed7fe1d936
|
|
BLAKE2b-256 checksum How to use checksums |
fdecc45f7a2956379f3d11b90d6eb33e806d6260ceb13410da7b3bed30e4e01c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl |
|---|---|
| Size | 175.0 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
3d1f4705a4ec1e48ff383a4d92299d8ec25e9a8158bcea619912440948117634
|
|
BLAKE2b-256 checksum How to use checksums |
90dabe6a03bfa6346803cd2549d82af02ac485bfabf666caec52bf6be5cf9f3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl |
|---|---|
| Size | 174.9 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
0c23f21e8d2b60efab57bc6ce9d1fb7c4e96f4bfefbf5a6043a3f3309e2a738a
|
|
BLAKE2b-256 checksum How to use checksums |
a8e4a79c57e22d6d09bbeb5e8febb8cfa0fe10ede69eed9c3458d3ec99014e20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl |
|---|---|
| Size | 174.9 kB |
| Tags | CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
c8369ef49169804944e920c427e350182e33756422b69989c55608fc28bebf98
|
|
BLAKE2b-256 checksum How to use checksums |
553afcce17a6d31e11c68d915406e7d6493325b7ce9c4ecde548529483874ca4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl |
|---|---|
| Size | 172.4 kB |
| Tags | CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
6217c63a36e9b26e9271e686d212397ce7fb04c07d85509dd4e2ed73493320f8
|
|
BLAKE2b-256 checksum How to use checksums |
0dca404a902e7fc2d39796b01f72e90a2b32e7ca25a3708bcf1d602ccf9e3658
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl
| Download URL | ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl |
|---|---|
| Size | 172.4 kB |
| Tags | CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
7ae13733d9467d16ccac2f38212cdee841b49ae927085c533425be9076b0bc9d
|
|
BLAKE2b-256 checksum How to use checksums |
ffb03318b1a5552364399432f37cf213f1318375e77c2eb4fce2110285dc308a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|