10

GitHub - ultrajson/ultrajson: Ultra fast JSON decoder and encoder written in C w...

 2 years ago
source link: https://github.com/ultrajson/ultrajson
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

UltraJSON

UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 3.6+.

Install with pip:

python -m 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]""")
[{'key': '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("åäö")
'"\\u00e5\\u00e4\\u00f6"'
>>> ujson.dumps("åäö", ensure_ascii=False)
'"åäö"'

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 indentation ("pretty output") is enabled. Default is 0 (disabled):

>>> ujson.dumps({"foo": "bar"})
'{"foo":"bar"}'
>>> print(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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK