ultrajson alternatives and similar packages
Based on the "Serialization" category.
Alternatively, view ultrajson alternatives based on common mentions on social networks and blogs.
-
marshmallow
A lightweight library for converting complex objects to and from simple Python datatypes. -
datasketch
MinHash, LSH, LSH Forest, Weighted MinHash, HyperLogLog, HyperLogLog++, LSH Ensemble and HNSW -
RDFLib plugin providing JSON-LD parsing and serialization
DISCONTINUED. JSON-LD parser and serializer plugins for RDFLib -
lupin is a Python JSON object mapper
Python document object mapper (load python object from JSON and vice-versa) -
py-object-factory
objectfactory is a python package to easily implement the factory design pattern for object creation, serialization, and polymorphism
CodeRabbit: AI Code Reviews for Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ultrajson or a related project?
README
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 |