Skip to main content

Ultra fast JSON encoder and decoder for Python

Project description

PyPI version Supported Python versions PyPI downloads GitHub Actions status Travis CI status Code style: Black

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ujson-2.0.3.tar.gz (7.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl (177.1 kB view details)

Uploaded CPython 3.8

ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl (175.0 kB view details)

Uploaded CPython 3.7m

ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl (174.9 kB view details)

Uploaded CPython 3.6m

ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl (174.9 kB view details)

Uploaded CPython 3.5m

ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl (172.4 kB view details)

Uploaded CPython 2.7mu

ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl (172.4 kB view details)

Uploaded CPython 2.7m

File details

Details for the file ujson-2.0.3.tar.gz.

File metadata

  • Download URL: ujson-2.0.3.tar.gz
  • Upload date:
  • Size: 7.1 MB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3.tar.gz
Algorithm Hash digest
SHA256 bd2deffc983827510e5145fb66e4cc0f577480c62fe0b4882139f8f7d27ae9a3
MD5 80d288c186dd02579e1561494b45aa41
BLAKE2b-256 50d7dce3fc97329639bba9c8b3cdadaa51ae2757c9402d4b43ac5feb8b624792

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 177.1 kB
  • Tags: CPython 3.8
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2ab88e330405315512afe9276f29a60e9b3439187b273665630a57ed7fe1d936
MD5 f15227afc90b9810712f74a1c4a84027
BLAKE2b-256 fdecc45f7a2956379f3d11b90d6eb33e806d6260ceb13410da7b3bed30e4e01c

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 175.0 kB
  • Tags: CPython 3.7m
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3d1f4705a4ec1e48ff383a4d92299d8ec25e9a8158bcea619912440948117634
MD5 0c739f7323448b6a7b8f4f87ba7b9849
BLAKE2b-256 90dabe6a03bfa6346803cd2549d82af02ac485bfabf666caec52bf6be5cf9f3e

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 174.9 kB
  • Tags: CPython 3.6m
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0c23f21e8d2b60efab57bc6ce9d1fb7c4e96f4bfefbf5a6043a3f3309e2a738a
MD5 c76627777d1c8c5032740646a9820236
BLAKE2b-256 a8e4a79c57e22d6d09bbeb5e8febb8cfa0fe10ede69eed9c3458d3ec99014e20

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 174.9 kB
  • Tags: CPython 3.5m
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c8369ef49169804944e920c427e350182e33756422b69989c55608fc28bebf98
MD5 a74c1f9c8cf7227a6b51d4abf8dc7ce7
BLAKE2b-256 553afcce17a6d31e11c68d915406e7d6493325b7ce9c4ecde548529483874ca4

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 172.4 kB
  • Tags: CPython 2.7mu
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6217c63a36e9b26e9271e686d212397ce7fb04c07d85509dd4e2ed73493320f8
MD5 de7d97959a0c512c46db075f5fb594e2
BLAKE2b-256 0dca404a902e7fc2d39796b01f72e90a2b32e7ca25a3708bcf1d602ccf9e3658

See more details on using hashes here.

File details

Details for the file ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 172.4 kB
  • Tags: CPython 2.7m
  • Uploaded using 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

File hashes

Hashes for ujson-2.0.3-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7ae13733d9467d16ccac2f38212cdee841b49ae927085c533425be9076b0bc9d
MD5 a1fd0a37df9ee09816a3eb3df52d4b3a
BLAKE2b-256 ffb03318b1a5552364399432f37cf213f1318375e77c2eb4fce2110285dc308a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page