Skip to main content

Ultra fast JSON encoder and decoder for Python

Project description

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

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-1.30.zip (193.8 kB view details)

Uploaded Source

Built Distributions

ujson-1.30.win32-py3.3.exe (216.3 kB view details)

Uploaded Source

ujson-1.30.win32-py2.7.exe (221.3 kB view details)

Uploaded Source

ujson-1.30.win32-py2.6.exe (221.5 kB view details)

Uploaded Source

File details

Details for the file ujson-1.30.zip.

File metadata

  • Download URL: ujson-1.30.zip
  • Upload date:
  • Size: 193.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ujson-1.30.zip
Algorithm Hash digest
SHA256 489a55781a50126b0af12726bde50857b82fe5bbe0e5eb1bd37abe39da578d5f
MD5 cddd818b4602552281e31a447784113f
BLAKE2b-256 c58304e9b6d9cd3bcfe1cd99c278efdeccfa24d7c2fe18e2aff8d28ca8a9a1b9

See more details on using hashes here.

File details

Details for the file ujson-1.30.win32-py3.3.exe.

File metadata

  • Download URL: ujson-1.30.win32-py3.3.exe
  • Upload date:
  • Size: 216.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ujson-1.30.win32-py3.3.exe
Algorithm Hash digest
SHA256 8248f75296c8139869169c5504cac49ac6a5b04c2187ec3ee2025cd9e3ea144f
MD5 f80601e9e35a6c95ddc4c406c8068d65
BLAKE2b-256 ad689a2792c92c3c59a012bcbda0404be84ac852dafd49a98819a5df13d51fe1

See more details on using hashes here.

File details

Details for the file ujson-1.30.win32-py2.7.exe.

File metadata

  • Download URL: ujson-1.30.win32-py2.7.exe
  • Upload date:
  • Size: 221.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ujson-1.30.win32-py2.7.exe
Algorithm Hash digest
SHA256 aa3c9a6554a5b0b9f91f01ed936db09dae87f3b4fc126612c431bfec0e22f498
MD5 7c6c197caf9c2aa80b222c24eca34d49
BLAKE2b-256 c3bec654aca4b5231767dba10cb790b3d22d471ea4b520b0220acbe495ed59b3

See more details on using hashes here.

File details

Details for the file ujson-1.30.win32-py2.6.exe.

File metadata

  • Download URL: ujson-1.30.win32-py2.6.exe
  • Upload date:
  • Size: 221.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ujson-1.30.win32-py2.6.exe
Algorithm Hash digest
SHA256 0212678bfd24e656d55474c82b33c8067ea12426cf0a6acccbca1c3e94294860
MD5 70cfa489987cd40427a575a296b97e0b
BLAKE2b-256 1cac822f3176d7cd688cca919b8e4772ae6aac309189ddabc3501807fafe4a3b

See more details on using hashes here.

Supported by

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