Skip to main content

Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy

Project description

orjson

orjson is a fast, correct JSON library for Python. It benchmarks as the fastest Python library for JSON and is more correct than the standard json library or other third-party libraries. It serializes dataclass, datetime, numpy, and UUID instances natively.

Its features and drawbacks compared to other Python JSON libraries:

  • serializes dataclass instances 40-50x as fast as other libraries
  • serializes datetime, date, and time instances to RFC 3339 format, e.g., "1970-01-01T00:00:00+00:00"
  • serializes numpy.ndarray instances 4-12x as fast with 0.3x the memory usage of other libraries
  • pretty prints 10x to 20x as fast as the standard library
  • serializes to bytes rather than str, i.e., is not a drop-in replacement
  • serializes str without escaping unicode to ASCII, e.g., "好" rather than "\\u597d"
  • serializes float 10x as fast and deserializes twice as fast as other libraries
  • serializes subclasses of str, int, list, and dict natively, requiring default to specify how to serialize others
  • serializes arbitrary types using a default hook
  • has strict UTF-8 conformance, more correct than the standard library
  • has strict JSON conformance in not supporting Nan/Infinity/-Infinity
  • has an option for strict JSON conformance on 53-bit integers with default support for 64-bit
  • does not provide load() or dump() functions for reading from/writing to file-like objects

orjson supports CPython 3.7, 3.8, 3.9, 3.10, 3.11, and 3.12. It distributes amd64/x86_64, aarch64/armv8, arm7, POWER/ppc64le, and s390x wheels for Linux, amd64 and aarch64 wheels for macOS, and amd64 and i686/x86 wheels for Windows. orjson does not support PyPy. Releases follow semantic versioning and serializing a new object type without an opt-in flag is considered a breaking change.

orjson is licensed under both the Apache 2.0 and MIT licenses. The repository and issue tracker is github.com/ijl/orjson, and patches may be submitted there. There is a CHANGELOG available in the repository.

  1. Usage
    1. Install
    2. Quickstart
    3. Migrating
    4. Serialize
      1. default
      2. option
      3. Fragment
    5. Deserialize
  2. Types
    1. dataclass
    2. datetime
    3. enum
    4. float
    5. int
    6. numpy
    7. str
    8. uuid
  3. Testing
  4. Performance
    1. Latency
    2. Memory
    3. Reproducing
  5. Questions
  6. Packaging
  7. License

Usage

Install

To install a wheel from PyPI:

pip install --upgrade "pip>=20.3" # manylinux_x_y, universal2 wheel support
pip install --upgrade orjson

To build a wheel, see packaging.

Quickstart

This is an example of serializing, with options specified, and deserializing:

>>> import orjson, datetime, numpy
>>> data = {
    "type": "job",
    "created_at": datetime.datetime(1970, 1, 1),
    "status": "🆗",
    "payload": numpy.array([[1, 2], [3, 4]]),
}
>>> orjson.dumps(data, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)
b'{"type":"job","created_at":"1970-01-01T00:00:00+00:00","status":"\xf0\x9f\x86\x97","payload":[[1,2],[3,4]]}'
>>> orjson.loads(_)
{'type': 'job', 'created_at': '1970-01-01T00:00:00+00:00', 'status': '🆗', 'payload': [[1, 2], [3, 4]]}

Migrating

orjson version 3 serializes more types than version 2. Subclasses of str, int, dict, and list are now serialized. This is faster and more similar to the standard library. It can be disabled with orjson.OPT_PASSTHROUGH_SUBCLASS.dataclasses.dataclass instances are now serialized by default and cannot be customized in a default function unless option=orjson.OPT_PASSTHROUGH_DATACLASS is specified. uuid.UUID instances are serialized by default. For any type that is now serialized, implementations in a default function and options enabling them can be removed but do not need to be. There was no change in deserialization.

To migrate from the standard library, the largest difference is that orjson.dumps returns bytes and json.dumps returns a str. Users with dict objects using non-str keys should specify option=orjson.OPT_NON_STR_KEYS. sort_keys is replaced by option=orjson.OPT_SORT_KEYS. indent is replaced by option=orjson.OPT_INDENT_2 and other levels of indentation are not supported.

Serialize

def dumps(
    __obj: Any,
    default: Optional[Callable[[Any], Any]] = ...,
    option: Optional[int] = ...,
) -> bytes: ...

dumps() serializes Python objects to JSON.

It natively serializes str, dict, list, tuple, int, float, bool, None, dataclasses.dataclass, typing.TypedDict, datetime.datetime, datetime.date, datetime.time, uuid.UUID, numpy.ndarray, and orjson.Fragment instances. It supports arbitrary types through default. It serializes subclasses of str, int, dict, list, dataclasses.dataclass, and enum.Enum. It does not serialize subclasses of tuple to avoid serializing namedtuple objects as arrays. To avoid serializing subclasses, specify the option orjson.OPT_PASSTHROUGH_SUBCLASS.

The output is a bytes object containing UTF-8.

The global interpreter lock (GIL) is held for the duration of the call.

It raises JSONEncodeError on an unsupported type. This exception message describes the invalid object with the error message Type is not JSON serializable: .... To fix this, specify default.

It raises JSONEncodeError on a str that contains invalid UTF-8.

It raises JSONEncodeError on an integer that exceeds 64 bits by default or, with OPT_STRICT_INTEGER, 53 bits.

It raises JSONEncodeError if a dict has a key of a type other than str, unless OPT_NON_STR_KEYS is specified.

It raises JSONEncodeError if the output of default recurses to handling by default more than 254 levels deep.

It raises JSONEncodeError on circular references.

It raises JSONEncodeError if a tzinfo on a datetime object is unsupported.

JSONEncodeError is a subclass of TypeError. This is for compatibility with the standard library.

If the failure was caused by an exception in default then JSONEncodeError chains the original exception as __cause__.

default

To serialize a subclass or arbitrary types, specify default as a callable that returns a supported type. default may be a function, lambda, or callable class instance. To specify that a type was not handled by default, raise an exception such as TypeError.

>>> import orjson, decimal
>>>
def default(obj):
    if isinstance(obj, decimal.Decimal):
        return str(obj)
    raise TypeError

>>> orjson.dumps(decimal.Decimal("0.0842389659712649442845"))
JSONEncodeError: Type is not JSON serializable: decimal.Decimal
>>> orjson.dumps(decimal.Decimal("0.0842389659712649442845"), default=default)
b'"0.0842389659712649442845"'
>>> orjson.dumps({1, 2}, default=default)
orjson.JSONEncodeError: Type is not JSON serializable: set

The default callable may return an object that itself must be handled by default up to 254 times before an exception is raised.

It is important that default raise an exception if a type cannot be handled. Python otherwise implicitly returns None, which appears to the caller like a legitimate value and is serialized:

>>> import orjson, json, rapidjson
>>>
def default(obj):
    if isinstance(obj, decimal.Decimal):
        return str(obj)

>>> orjson.dumps({"set":{1, 2}}, default=default)
b'{"set":null}'
>>> json.dumps({"set":{1, 2}}, default=default)
'{"set":null}'
>>> rapidjson.dumps({"set":{1, 2}}, default=default)
'{"set":null}'

option

To modify how data is serialized, specify option. Each option is an integer constant in orjson. To specify multiple options, mask them together, e.g., option=orjson.OPT_STRICT_INTEGER | orjson.OPT_NAIVE_UTC.

OPT_APPEND_NEWLINE

Append \n to the output. This is a convenience and optimization for the pattern of dumps(...) + "\n". bytes objects are immutable and this pattern copies the original contents.

>>> import orjson
>>> orjson.dumps([])
b"[]"
>>> orjson.dumps([], option=orjson.OPT_APPEND_NEWLINE)
b"[]\n"
OPT_INDENT_2

Pretty-print output with an indent of two spaces. This is equivalent to indent=2 in the standard library. Pretty printing is slower and the output larger. orjson is the fastest compared library at pretty printing and has much less of a slowdown to pretty print than the standard library does. This option is compatible with all other options.

>>> import orjson
>>> orjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]})
b'{"a":"b","c":{"d":true},"e":[1,2]}'
>>> orjson.dumps(
    {"a": "b", "c": {"d": True}, "e": [1, 2]},
    option=orjson.OPT_INDENT_2
)
b'{\n  "a": "b",\n  "c": {\n    "d": true\n  },\n  "e": [\n    1,\n    2\n  ]\n}'

If displayed, the indentation and linebreaks appear like this:

{
  "a": "b",
  "c": {
    "d": true
  },
  "e": [
    1,
    2
  ]
}

This measures serializing the github.json fixture as compact (52KiB) or pretty (64KiB):

Library compact (ms) pretty (ms) vs. orjson
orjson 0.03 0.04 1
ujson 0.18 0.19 4.6
rapidjson 0.1 0.12 2.9
simplejson 0.25 0.89 21.4
json 0.18 0.71 17

This measures serializing the citm_catalog.json fixture, more of a worst case due to the amount of nesting and newlines, as compact (489KiB) or pretty (1.1MiB):

Library compact (ms) pretty (ms) vs. orjson
orjson 0.59 0.71 1
ujson 2.9 3.59 5
rapidjson 1.81 2.8 3.9
simplejson 10.43 42.13 59.1
json 4.16 33.42 46.9

This can be reproduced using the pyindent script.

OPT_NAIVE_UTC

Serialize datetime.datetime objects without a tzinfo as UTC. This has no effect on datetime.datetime objects that have tzinfo set.

>>> import orjson, datetime
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0),
    )
b'"1970-01-01T00:00:00"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0),
        option=orjson.OPT_NAIVE_UTC,
    )
b'"1970-01-01T00:00:00+00:00"'
OPT_NON_STR_KEYS

Serialize dict keys of type other than str. This allows dict keys to be one of str, int, float, bool, None, datetime.datetime, datetime.date, datetime.time, enum.Enum, and uuid.UUID. For comparison, the standard library serializes str, int, float, bool or None by default. orjson benchmarks as being faster at serializing non-str keys than other libraries. This option is slower for str keys than the default.

>>> import orjson, datetime, uuid
>>> orjson.dumps(
        {uuid.UUID("7202d115-7ff3-4c81-a7c1-2a1f067b1ece"): [1, 2, 3]},
        option=orjson.OPT_NON_STR_KEYS,
    )
b'{"7202d115-7ff3-4c81-a7c1-2a1f067b1ece":[1,2,3]}'
>>> orjson.dumps(
        {datetime.datetime(1970, 1, 1, 0, 0, 0): [1, 2, 3]},
        option=orjson.OPT_NON_STR_KEYS | orjson.OPT_NAIVE_UTC,
    )
b'{"1970-01-01T00:00:00+00:00":[1,2,3]}'

These types are generally serialized how they would be as values, e.g., datetime.datetime is still an RFC 3339 string and respects options affecting it. The exception is that int serialization does not respect OPT_STRICT_INTEGER.

This option has the risk of creating duplicate keys. This is because non-str objects may serialize to the same str as an existing key, e.g., {"1": true, 1: false}. The last key to be inserted to the dict will be serialized last and a JSON deserializer will presumably take the last occurrence of a key (in the above, false). The first value will be lost.

This option is compatible with orjson.OPT_SORT_KEYS. If sorting is used, note the sort is unstable and will be unpredictable for duplicate keys.

>>> import orjson, datetime
>>> orjson.dumps(
    {"other": 1, datetime.date(1970, 1, 5): 2, datetime.date(1970, 1, 3): 3},
    option=orjson.OPT_NON_STR_KEYS | orjson.OPT_SORT_KEYS
)
b'{"1970-01-03":3,"1970-01-05":2,"other":1}'

This measures serializing 589KiB of JSON comprising a list of 100 dict in which each dict has both 365 randomly-sorted int keys representing epoch timestamps as well as one str key and the value for each key is a single integer. In "str keys", the keys were converted to str before serialization, and orjson still specifes option=orjson.OPT_NON_STR_KEYS (which is always somewhat slower).

Library str keys (ms) int keys (ms) int keys sorted (ms)
orjson 1.53 2.16 4.29
ujson 3.07 5.65
rapidjson 4.29
simplejson 11.24 14.50 21.86
json 7.17 8.49

ujson is blank for sorting because it segfaults. json is blank because it raises TypeError on attempting to sort before converting all keys to str. rapidjson is blank because it does not support non-str keys. This can be reproduced using the pynonstr script.

OPT_OMIT_MICROSECONDS

Do not serialize the microsecond field on datetime.datetime and datetime.time instances.

>>> import orjson, datetime
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, 1),
    )
b'"1970-01-01T00:00:00.000001"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, 1),
        option=orjson.OPT_OMIT_MICROSECONDS,
    )
b'"1970-01-01T00:00:00"'
OPT_PASSTHROUGH_DATACLASS

Passthrough dataclasses.dataclass instances to default. This allows customizing their output but is much slower.

>>> import orjson, dataclasses
>>>
@dataclasses.dataclass
class User:
    id: str
    name: str
    password: str

def default(obj):
    if isinstance(obj, User):
        return {"id": obj.id, "name": obj.name}
    raise TypeError

>>> orjson.dumps(User("3b1", "asd", "zxc"))
b'{"id":"3b1","name":"asd","password":"zxc"}'
>>> orjson.dumps(User("3b1", "asd", "zxc"), option=orjson.OPT_PASSTHROUGH_DATACLASS)
TypeError: Type is not JSON serializable: User
>>> orjson.dumps(
        User("3b1", "asd", "zxc"),
        option=orjson.OPT_PASSTHROUGH_DATACLASS,
        default=default,
    )
b'{"id":"3b1","name":"asd"}'
OPT_PASSTHROUGH_DATETIME

Passthrough datetime.datetime, datetime.date, and datetime.time instances to default. This allows serializing datetimes to a custom format, e.g., HTTP dates:

>>> import orjson, datetime
>>>
def default(obj):
    if isinstance(obj, datetime.datetime):
        return obj.strftime("%a, %d %b %Y %H:%M:%S GMT")
    raise TypeError

>>> orjson.dumps({"created_at": datetime.datetime(1970, 1, 1)})
b'{"created_at":"1970-01-01T00:00:00"}'
>>> orjson.dumps({"created_at": datetime.datetime(1970, 1, 1)}, option=orjson.OPT_PASSTHROUGH_DATETIME)
TypeError: Type is not JSON serializable: datetime.datetime
>>> orjson.dumps(
        {"created_at": datetime.datetime(1970, 1, 1)},
        option=orjson.OPT_PASSTHROUGH_DATETIME,
        default=default,
    )
b'{"created_at":"Thu, 01 Jan 1970 00:00:00 GMT"}'

This does not affect datetimes in dict keys if using OPT_NON_STR_KEYS.

OPT_PASSTHROUGH_SUBCLASS

Passthrough subclasses of builtin types to default.

>>> import orjson
>>>
class Secret(str):
    pass

def default(obj):
    if isinstance(obj, Secret):
        return "******"
    raise TypeError

>>> orjson.dumps(Secret("zxc"))
b'"zxc"'
>>> orjson.dumps(Secret("zxc"), option=orjson.OPT_PASSTHROUGH_SUBCLASS)
TypeError: Type is not JSON serializable: Secret
>>> orjson.dumps(Secret("zxc"), option=orjson.OPT_PASSTHROUGH_SUBCLASS, default=default)
b'"******"'

This does not affect serializing subclasses as dict keys if using OPT_NON_STR_KEYS.

OPT_SERIALIZE_DATACLASS

This is deprecated and has no effect in version 3. In version 2 this was required to serialize dataclasses.dataclass instances. For more, see dataclass.

OPT_SERIALIZE_NUMPY

Serialize numpy.ndarray instances. For more, see numpy.

OPT_SERIALIZE_UUID

This is deprecated and has no effect in version 3. In version 2 this was required to serialize uuid.UUID instances. For more, see UUID.

OPT_SORT_KEYS

Serialize dict keys in sorted order. The default is to serialize in an unspecified order. This is equivalent to sort_keys=True in the standard library.

This can be used to ensure the order is deterministic for hashing or tests. It has a substantial performance penalty and is not recommended in general.

>>> import orjson
>>> orjson.dumps({"b": 1, "c": 2, "a": 3})
b'{"b":1,"c":2,"a":3}'
>>> orjson.dumps({"b": 1, "c": 2, "a": 3}, option=orjson.OPT_SORT_KEYS)
b'{"a":3,"b":1,"c":2}'

This measures serializing the twitter.json fixture unsorted and sorted:

Library unsorted (ms) sorted (ms) vs. orjson
orjson 0.32 0.54 1
ujson 1.6 2.07 3.8
rapidjson 1.12 1.65 3.1
simplejson 2.25 3.13 5.8
json 1.78 2.32 4.3

The benchmark can be reproduced using the pysort script.

The sorting is not collation/locale-aware:

>>> import orjson
>>> orjson.dumps({"a": 1, "ä": 2, "A": 3}, option=orjson.OPT_SORT_KEYS)
b'{"A":3,"a":1,"\xc3\xa4":2}'

This is the same sorting behavior as the standard library, rapidjson, simplejson, and ujson.

dataclass also serialize as maps but this has no effect on them.

OPT_STRICT_INTEGER

Enforce 53-bit limit on integers. The limit is otherwise 64 bits, the same as the Python standard library. For more, see int.

OPT_UTC_Z

Serialize a UTC timezone on datetime.datetime instances as Z instead of +00:00.

>>> import orjson, datetime, zoneinfo
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo("UTC")),
    )
b'"1970-01-01T00:00:00+00:00"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo("UTC")),
        option=orjson.OPT_UTC_Z
    )
b'"1970-01-01T00:00:00Z"'

Fragment

orjson.Fragment includes already-serialized JSON in a document. This is an efficient way to include JSON blobs from a cache, JSONB field, or separately serialized object without first deserializing to Python objects via loads().

>>> import orjson
>>> orjson.dumps({"key": "zxc", "data": orjson.Fragment(b'{"a": "b", "c": 1}')})
b'{"key":"zxc","data":{"a": "b", "c": 1}}'

It does no reformatting: orjson.OPT_INDENT_2 will not affect a compact blob nor will a pretty-printed JSON blob be rewritten as compact.

The input must be bytes or str and given as a positional argument.

This raises orjson.JSONEncodeError if a str is given and the input is not valid UTF-8. It otherwise does no validation and it is possible to write invalid JSON. This does not escape characters. The implementation is tested to not crash if given invalid strings or invalid JSON.

This is similar to RawJSON in rapidjson.

Deserialize

def loads(__obj: Union[bytes, bytearray, memoryview, str]) -> Any: ...

loads() deserializes JSON to Python objects. It deserializes to dict, list, int, float, str, bool, and None objects.

bytes, bytearray, memoryview, and str input are accepted. If the input exists as a memoryview, bytearray, or bytes object, it is recommended to pass these directly rather than creating an unnecessary str object. That is, orjson.loads(b"{}") instead of orjson.loads(b"{}".decode("utf-8")). This has lower memory usage and lower latency.

The input must be valid UTF-8.

orjson maintains a cache of map keys for the duration of the process. This causes a net reduction in memory usage by avoiding duplicate strings. The keys must be at most 64 bytes to be cached and 1024 entries are stored.

The global interpreter lock (GIL) is held for the duration of the call.

It raises JSONDecodeError if given an invalid type or invalid JSON. This includes if the input contains NaN, Infinity, or -Infinity, which the standard library allows, but is not valid JSON.

JSONDecodeError is a subclass of json.JSONDecodeError and ValueError. This is for compatibility with the standard library.

Types

dataclass

orjson serializes instances of dataclasses.dataclass natively. It serializes instances 40-50x as fast as other libraries and avoids a severe slowdown seen in other libraries compared to serializing dict.

It is supported to pass all variants of dataclasses, including dataclasses using __slots__, frozen dataclasses, those with optional or default attributes, and subclasses. There is a performance benefit to not using __slots__.

Library dict (ms) dataclass (ms) vs. orjson
orjson 1.40 1.60 1
ujson
rapidjson 3.64 68.48 42
simplejson 14.21 92.18 57
json 13.28 94.90 59

This measures serializing 555KiB of JSON, orjson natively and other libraries using default to serialize the output of dataclasses.asdict(). This can be reproduced using the pydataclass script.

Dataclasses are serialized as maps, with every attribute serialized and in the order given on class definition:

>>> import dataclasses, orjson, typing

@dataclasses.dataclass
class Member:
    id: int
    active: bool = dataclasses.field(default=False)

@dataclasses.dataclass
class Object:
    id: int
    name: str
    members: typing.List[Member]

>>> orjson.dumps(Object(1, "a", [Member(1, True), Member(2)]))
b'{"id":1,"name":"a","members":[{"id":1,"active":true},{"id":2,"active":false}]}'

datetime

orjson serializes datetime.datetime objects to RFC 3339 format, e.g., "1970-01-01T00:00:00+00:00". This is a subset of ISO 8601 and is compatible with isoformat() in the standard library.

>>> import orjson, datetime, zoneinfo
>>> orjson.dumps(
    datetime.datetime(2018, 12, 1, 2, 3, 4, 9, tzinfo=zoneinfo.ZoneInfo("Australia/Adelaide"))
)
b'"2018-12-01T02:03:04.000009+10:30"'
>>> orjson.dumps(
    datetime.datetime(2100, 9, 1, 21, 55, 2).replace(tzinfo=zoneinfo.ZoneInfo("UTC"))
)
b'"2100-09-01T21:55:02+00:00"'
>>> orjson.dumps(
    datetime.datetime(2100, 9, 1, 21, 55, 2)
)
b'"2100-09-01T21:55:02"'

datetime.datetime supports instances with a tzinfo that is None, datetime.timezone.utc, a timezone instance from the python3.9+ zoneinfo module, or a timezone instance from the third-party pendulum, pytz, or dateutil/arrow libraries.

It is fastest to use the standard library's zoneinfo.ZoneInfo for timezones.

datetime.time objects must not have a tzinfo.

>>> import orjson, datetime
>>> orjson.dumps(datetime.time(12, 0, 15, 290))
b'"12:00:15.000290"'

datetime.date objects will always serialize.

>>> import orjson, datetime
>>> orjson.dumps(datetime.date(1900, 1, 2))
b'"1900-01-02"'

Errors with tzinfo result in JSONEncodeError being raised.

To disable serialization of datetime objects specify the option orjson.OPT_PASSTHROUGH_DATETIME.

To use "Z" suffix instead of "+00:00" to indicate UTC ("Zulu") time, use the option orjson.OPT_UTC_Z.

To assume datetimes without timezone are UTC, use the option orjson.OPT_NAIVE_UTC.

enum

orjson serializes enums natively. Options apply to their values.

>>> import enum, datetime, orjson
>>>
class DatetimeEnum(enum.Enum):
    EPOCH = datetime.datetime(1970, 1, 1, 0, 0, 0)
>>> orjson.dumps(DatetimeEnum.EPOCH)
b'"1970-01-01T00:00:00"'
>>> orjson.dumps(DatetimeEnum.EPOCH, option=orjson.OPT_NAIVE_UTC)
b'"1970-01-01T00:00:00+00:00"'

Enums with members that are not supported types can be serialized using default:

>>> import enum, orjson
>>>
class Custom:
    def __init__(self, val):
        self.val = val

def default(obj):
    if isinstance(obj, Custom):
        return obj.val
    raise TypeError

class CustomEnum(enum.Enum):
    ONE = Custom(1)

>>> orjson.dumps(CustomEnum.ONE, default=default)
b'1'

float

orjson serializes and deserializes double precision floats with no loss of precision and consistent rounding.

orjson.dumps() serializes Nan, Infinity, and -Infinity, which are not compliant JSON, as null:

>>> import orjson, ujson, rapidjson, json
>>> orjson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
b'[null,null,null]'
>>> ujson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
OverflowError: Invalid Inf value when encoding double
>>> rapidjson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
'[NaN,Infinity,-Infinity]'
>>> json.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
'[NaN, Infinity, -Infinity]'

int

orjson serializes and deserializes 64-bit integers by default. The range supported is a signed 64-bit integer's minimum (-9223372036854775807) to an unsigned 64-bit integer's maximum (18446744073709551615). This is widely compatible, but there are implementations that only support 53-bits for integers, e.g., web browsers. For those implementations, dumps() can be configured to raise a JSONEncodeError on values exceeding the 53-bit range.

>>> import orjson
>>> orjson.dumps(9007199254740992)
b'9007199254740992'
>>> orjson.dumps(9007199254740992, option=orjson.OPT_STRICT_INTEGER)
JSONEncodeError: Integer exceeds 53-bit range
>>> orjson.dumps(-9007199254740992, option=orjson.OPT_STRICT_INTEGER)
JSONEncodeError: Integer exceeds 53-bit range

numpy

orjson natively serializes numpy.ndarray and individual numpy.float64, numpy.float32, numpy.int64, numpy.int32, numpy.int16, numpy.int8, numpy.uint64, numpy.uint32, numpy.uint16, numpy.uint8, numpy.uintp, numpy.intp, numpy.datetime64, and numpy.bool instances.

orjson is faster than all compared libraries at serializing numpy instances. Serializing numpy data requires specifying option=orjson.OPT_SERIALIZE_NUMPY.

>>> import orjson, numpy
>>> orjson.dumps(
        numpy.array([[1, 2, 3], [4, 5, 6]]),
        option=orjson.OPT_SERIALIZE_NUMPY,
)
b'[[1,2,3],[4,5,6]]'

The array must be a contiguous C array (C_CONTIGUOUS) and one of the supported datatypes.

Note a difference between serializing numpy.float32 using ndarray.tolist() or orjson.dumps(..., option=orjson.OPT_SERIALIZE_NUMPY): tolist() converts to a double before serializing and orjson's native path does not. This can result in different rounding.

numpy.datetime64 instances are serialized as RFC 3339 strings and datetime options affect them.

>>> import orjson, numpy
>>> orjson.dumps(
        numpy.datetime64("2021-01-01T00:00:00.172"),
        option=orjson.OPT_SERIALIZE_NUMPY,
)
b'"2021-01-01T00:00:00.172000"'
>>> orjson.dumps(
        numpy.datetime64("2021-01-01T00:00:00.172"),
        option=(
            orjson.OPT_SERIALIZE_NUMPY |
            orjson.OPT_NAIVE_UTC |
            orjson.OPT_OMIT_MICROSECONDS
        ),
)
b'"2021-01-01T00:00:00+00:00"'

If an array is not a contiguous C array, contains an unsupported datatype, or contains a numpy.datetime64 using an unsupported representation (e.g., picoseconds), orjson falls through to default. In default, obj.tolist() can be specified. If an array is malformed, which is not expected, orjson.JSONEncodeError is raised.

This measures serializing 92MiB of JSON from an numpy.ndarray with dimensions of (50000, 100) and numpy.float64 values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 194 99 1.0
ujson
rapidjson 3,048 309 15.7
simplejson 3,023 297 15.6
json 3,133 297 16.1

This measures serializing 100MiB of JSON from an numpy.ndarray with dimensions of (100000, 100) and numpy.int32 values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 178 115 1.0
ujson
rapidjson 1,512 551 8.5
simplejson 1,606 504 9.0
json 1,506 503 8.4

This measures serializing 105MiB of JSON from an numpy.ndarray with dimensions of (100000, 200) and numpy.bool values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 157 120 1.0
ujson
rapidjson 710 327 4.5
simplejson 931 398 5.9
json 996 400 6.3

In these benchmarks, orjson serializes natively, ujson is blank because it does not support a default parameter, and the other libraries serialize ndarray.tolist() via default. The RSS column measures peak memory usage during serialization. This can be reproduced using the pynumpy script.

orjson does not have an installation or compilation dependency on numpy. The implementation is independent, reading numpy.ndarray using PyArrayInterface.

str

orjson is strict about UTF-8 conformance. This is stricter than the standard library's json module, which will serialize and deserialize UTF-16 surrogates, e.g., "\ud800", that are invalid UTF-8.

If orjson.dumps() is given a str that does not contain valid UTF-8, orjson.JSONEncodeError is raised. If loads() receives invalid UTF-8, orjson.JSONDecodeError is raised.

orjson and rapidjson are the only compared JSON libraries to consistently error on bad input.

>>> import orjson, ujson, rapidjson, json
>>> orjson.dumps('\ud800')
JSONEncodeError: str is not valid UTF-8: surrogates not allowed
>>> ujson.dumps('\ud800')
UnicodeEncodeError: 'utf-8' codec ...
>>> rapidjson.dumps('\ud800')
UnicodeEncodeError: 'utf-8' codec ...
>>> json.dumps('\ud800')
'"\\ud800"'
>>> orjson.loads('"\\ud800"')
JSONDecodeError: unexpected end of hex escape at line 1 column 8: line 1 column 1 (char 0)
>>> ujson.loads('"\\ud800"')
''
>>> rapidjson.loads('"\\ud800"')
ValueError: Parse error at offset 1: The surrogate pair in string is invalid.
>>> json.loads('"\\ud800"')
'\ud800'

To make a best effort at deserializing bad input, first decode bytes using the replace or lossy argument for errors:

>>> import orjson
>>> orjson.loads(b'"\xed\xa0\x80"')
JSONDecodeError: str is not valid UTF-8: surrogates not allowed
>>> orjson.loads(b'"\xed\xa0\x80"'.decode("utf-8", "replace"))
'���'

uuid

orjson serializes uuid.UUID instances to RFC 4122 format, e.g., "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".

>>> import orjson, uuid
>>> orjson.dumps(uuid.UUID('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'))
b'"f81d4fae-7dec-11d0-a765-00a0c91e6bf6"'
>>> orjson.dumps(uuid.uuid5(uuid.NAMESPACE_DNS, "python.org"))
b'"886313e1-3b8a-5372-9b90-0c9aee199e5d"'

Testing

The library has comprehensive tests. There are tests against fixtures in the JSONTestSuite and nativejson-benchmark repositories. It is tested to not crash against the Big List of Naughty Strings. It is tested to not leak memory. It is tested to not crash against and not accept invalid UTF-8. There are integration tests exercising the library's use in web servers (gunicorn using multiprocess/forked workers) and when multithreaded. It also uses some tests from the ultrajson library.

orjson is the most correct of the compared libraries. This graph shows how each library handles a combined 342 JSON fixtures from the JSONTestSuite and nativejson-benchmark tests:

Library Invalid JSON documents not rejected Valid JSON documents not deserialized
orjson 0 0
ujson 38 0
rapidjson 6 0
simplejson 13 0
json 17 0

This shows that all libraries deserialize valid JSON but only orjson correctly rejects the given invalid JSON fixtures. Errors are largely due to accepting invalid strings and numbers.

The graph above can be reproduced using the pycorrectness script.

Performance

Serialization and deserialization performance of orjson is better than ultrajson, rapidjson, simplejson, or json. The benchmarks are done on fixtures of real data:

  • twitter.json, 631.5KiB, results of a search on Twitter for "一", containing CJK strings, dictionaries of strings and arrays of dictionaries, indented.

  • github.json, 55.8KiB, a GitHub activity feed, containing dictionaries of strings and arrays of dictionaries, not indented.

  • citm_catalog.json, 1.7MiB, concert data, containing nested dictionaries of strings and arrays of integers, indented.

  • canada.json, 2.2MiB, coordinates of the Canadian border in GeoJSON format, containing floats and arrays, indented.

Latency

twitter.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.33 3069.4 1
ujson 1.68 592.8 5.15
rapidjson 1.12 891 3.45
simplejson 2.29 436.2 7.03
json 1.8 556.6 5.52

twitter.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.81 1237.6 1
ujson 1.87 533.9 2.32
rapidjson 2.97 335.8 3.67
simplejson 2.15 463.8 2.66
json 2.45 408.2 3.03

github.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.03 28817.3 1
ujson 0.18 5478.2 5.26
rapidjson 0.1 9686.4 2.98
simplejson 0.26 3901.3 7.39
json 0.18 5437 5.27

github.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.07 15270 1
ujson 0.19 5374.8 2.84
rapidjson 0.17 5854.9 2.59
simplejson 0.15 6707.4 2.27
json 0.16 6397.3 2.39

citm_catalog.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.58 1722.5 1
ujson 2.89 345.6 4.99
rapidjson 1.83 546.4 3.15
simplejson 10.39 95.9 17.89
json 3.93 254.6 6.77

citm_catalog.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 1.76 569.2 1
ujson 3.5 284.3 1.99
rapidjson 5.77 173.2 3.28
simplejson 5.13 194.7 2.92
json 4.99 200.5 2.84

canada.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 3.62 276.3 1
ujson 14.16 70.6 3.91
rapidjson 33.64 29.7 9.29
simplejson 57.46 17.4 15.88
json 35.7 28 9.86

canada.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 3.89 256.6 1
ujson 8.73 114.3 2.24
rapidjson 23.33 42.8 5.99
simplejson 23.99 41.7 6.16
json 21.1 47.4 5.42

Memory

orjson as of 3.7.0 has higher baseline memory usage than other libraries due to a persistent buffer used for parsing. Incremental memory usage when deserializing is similar to the standard library and other third-party libraries.

This measures, in the first column, RSS after importing a library and reading the fixture, and in the second column, increases in RSS after repeatedly calling loads() on the fixture.

twitter.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 21.8 2.8
ujson 14.3 4.8
rapidjson 14.9 4.6
simplejson 13.4 2.4
json 13.1 2.3

github.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 21.2 0.5
ujson 13.6 0.6
rapidjson 14.1 0.5
simplejson 12.5 0.3
json 12.4 0.3

citm_catalog.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 23 10.6
ujson 15.2 11.2
rapidjson 15.8 29.7
simplejson 14.4 24.7
json 13.9 24.7

canada.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 23.2 21.3
ujson 15.6 19.2
rapidjson 16.3 23.4
simplejson 15 21.1
json 14.3 20.9

Reproducing

The above was measured using Python 3.10.5 on Linux (amd64) with orjson 3.7.9, ujson 5.4.0, python-rapidson 1.8, and simplejson 3.17.6.

The latency results can be reproduced using the pybench and graph scripts. The memory results can be reproduced using the pymem script.

Questions

Why can't I install it from PyPI?

Probably pip needs to be upgraded to version 20.3 or later to support the latest manylinux_x_y or universal2 wheel formats.

"Cargo, the Rust package manager, is not installed or is not on PATH."

This happens when there are no binary wheels (like manylinux) for your platform on PyPI. You can install Rust through rustup or a package manager and then it will compile.

Will it deserialize to dataclasses, UUIDs, decimals, etc or support object_hook?

No. This requires a schema specifying what types are expected and how to handle errors etc. This is addressed by data validation libraries a level above this.

Will it serialize to str?

No. bytes is the correct type for a serialized blob.

Will it support PyPy?

Probably not.

Packaging

To package orjson requires at least Rust 1.60 and the maturin build tool. The recommended build command is:

maturin build --release --strip

It benefits from also having a C build environment to compile a faster deserialization backend. See this project's manylinux_2_28 builds for an example using clang and LTO.

The project's own CI tests against nightly-2023-07-30 and stable 1.60. It is prudent to pin the nightly version because that channel can introduce breaking changes.

orjson is tested for amd64, aarch64, arm7, ppc64le, and s390x on Linux. It is tested for amd64 on macOS and cross-compiles for aarch64. For Windows it is tested on amd64 and i686.

There are no runtime dependencies other than libc.

The source distribution on PyPI contains all dependencies' source and can be built without network access. The file can be downloaded from https://files.pythonhosted.org/packages/source/o/orjson/orjson-${version}.tar.gz.

orjson's tests are included in the source distribution on PyPI. The requirements to run the tests are specified in test/requirements.txt. The tests should be run as part of the build. It can be run with pytest -q test.

License

orjson was written by ijl <ijl@mailbox.org>, copyright 2018 - 2023, licensed under both the Apache 2 and MIT licenses.

Project details


Release history Release notifications | RSS feed

This version

3.9.4

Download files

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

Source Distribution

orjson-3.9.4.tar.gz (4.6 MB view details)

Uploaded Source

Built Distributions

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

orjson-3.9.4-cp312-none-win_amd64.whl (200.9 kB view details)

Uploaded CPython 3.12Windows x86-64

orjson-3.9.4-cp312-cp312-musllinux_1_1_x86_64.whl (310.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

orjson-3.9.4-cp312-cp312-musllinux_1_1_aarch64.whl (316.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

orjson-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (247.2 kB view details)

Uploaded CPython 3.12macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.4-cp311-none-win_amd64.whl (200.9 kB view details)

Uploaded CPython 3.11Windows x86-64

orjson-3.9.4-cp311-none-win32.whl (200.2 kB view details)

Uploaded CPython 3.11Windows x86

orjson-3.9.4-cp311-cp311-musllinux_1_1_x86_64.whl (310.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

orjson-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl (316.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

orjson-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (155.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

orjson-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (155.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

orjson-3.9.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (130.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

orjson-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (297.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.9.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (247.1 kB view details)

Uploaded CPython 3.11macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.4-cp310-none-win_amd64.whl (200.9 kB view details)

Uploaded CPython 3.10Windows x86-64

orjson-3.9.4-cp310-none-win32.whl (200.2 kB view details)

Uploaded CPython 3.10Windows x86

orjson-3.9.4-cp310-cp310-musllinux_1_1_x86_64.whl (310.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

orjson-3.9.4-cp310-cp310-musllinux_1_1_aarch64.whl (316.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (155.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

orjson-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (155.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

orjson-3.9.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (130.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

orjson-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (297.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.9.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (247.1 kB view details)

Uploaded CPython 3.10macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.4-cp39-none-win_amd64.whl (200.7 kB view details)

Uploaded CPython 3.9Windows x86-64

orjson-3.9.4-cp39-none-win32.whl (200.1 kB view details)

Uploaded CPython 3.9Windows x86

orjson-3.9.4-cp39-cp39-musllinux_1_1_x86_64.whl (310.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

orjson-3.9.4-cp39-cp39-musllinux_1_1_aarch64.whl (316.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (155.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

orjson-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (155.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

orjson-3.9.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (130.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

orjson-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (297.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.9.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (246.7 kB view details)

Uploaded CPython 3.9macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.4-cp38-none-win_amd64.whl (200.5 kB view details)

Uploaded CPython 3.8Windows x86-64

orjson-3.9.4-cp38-none-win32.whl (200.0 kB view details)

Uploaded CPython 3.8Windows x86

orjson-3.9.4-cp38-cp38-musllinux_1_1_x86_64.whl (310.1 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

orjson-3.9.4-cp38-cp38-musllinux_1_1_aarch64.whl (316.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (155.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

orjson-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (155.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

orjson-3.9.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (130.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARMv7l

orjson-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (297.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.9.4-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (246.6 kB view details)

Uploaded CPython 3.8macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.4-cp37-none-win_amd64.whl (200.5 kB view details)

Uploaded CPython 3.7Windows x86-64

orjson-3.9.4-cp37-none-win32.whl (199.9 kB view details)

Uploaded CPython 3.7Windows x86

orjson-3.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl (310.1 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

orjson-3.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl (316.7 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

orjson-3.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

orjson-3.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (155.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390x

orjson-3.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (155.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64le

orjson-3.9.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (130.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARMv7l

orjson-3.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (297.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

orjson-3.9.4-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (246.7 kB view details)

Uploaded CPython 3.7mmacOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

File details

Details for the file orjson-3.9.4.tar.gz.

File metadata

  • Download URL: orjson-3.9.4.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4.tar.gz
Algorithm Hash digest
SHA256 a4c9254d21fc44526a3850355b89afd0d00ed73bdf902a5ab416df14a61eac6b
MD5 e8499fb459bff5e82287fbb8f80004f3
BLAKE2b-256 a43f81030eef50ce4f3c324099fd2378ca5be3712f11b2a2b3ae2d33b1da5726

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp312-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 200.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a533e664a0e3904307d662c5d45775544dc2b38df6e39e213ff6a86ceaa3d53c
MD5 2d52d02b6872bd31531d2f6530960706
BLAKE2b-256 28449b28bf1dfd32ccfc1fc45250ae80ef7d3dfb8fc2c1c18ad52a9981fd4cfb

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 562cf24f9f11df8099e0e78859ba6729e7caa25c2f3947cb228d9152946c854b
MD5 85cb64f62b61883cc7f6b105e016399f
BLAKE2b-256 77b341decad343c78fc8230d7f4b52039872a323ff374514c108f62cc70b7c72

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3932b06abf49135c93816c74139c7937fa54079fce3f44db2d598859894c344a
MD5 d32e38af786197cb7b168bf44a771ab7
BLAKE2b-256 003d91d51cc131c6da9f183f6204de98095344c6f72c5dd7f1d6fc61bd96eeb1

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23d3b6f2706cb324661899901e6b1fcaee4f5aac7d7588306df3f43e68173840
MD5 cd76033f6c62fbc13b28f17a1f8e8da2
BLAKE2b-256 c9a76e0791bd4c9404f507950ebbd4670133a708a1a444ab84053dc76a213b28

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 0b400cf89c15958cd829c8a4ade8f5dd73588e63d2fb71a00483e7a74e9f92da
MD5 0af6eaddddd17b47d6c267722ddf6bca
BLAKE2b-256 58ffffeb75c344e717aeb90f06f66e25acf8937e2033bd6700d03782c36566e3

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 200.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 3b9f8bf43a5367d5522f80e7d533c98d880868cd0b640b9088c9237306eca6e8
MD5 f3ea0b6242be48676aba51b35f2c9bdb
BLAKE2b-256 15c0b55de5f6a705f09f930fbb9ab6d015dfdf3870ce253627bc4c5ee35d2ebb

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.4-cp311-none-win32.whl
  • Upload date:
  • Size: 200.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp311-none-win32.whl
Algorithm Hash digest
SHA256 e12492ce65cb10f385e70a88badc6046bc720fa7d468db27b7429d85d41beaeb
MD5 e86d39b4d35195da5e79056a6f75c1da
BLAKE2b-256 da5e5c22a8f88f37168bde3b1d23429610e71f6075e7098966a824c2145ef85c

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d73c0fd54a52a1a1abfad69d4f1dfb7048cd0b3ef1828ddb4920ef2d3739d8fb
MD5 8ac42f248d04aa4d37fa0614b16e7e08
BLAKE2b-256 92d46e1d0c490722f14b51cf79d84e130c6889f35693f73021af168feb595452

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0e7c3b7e29572ef2d845a59853475f40fdabec53b8b7d6effda4bb26119c07f5
MD5 a8735439ede03d592ecfb6b07219bc38
BLAKE2b-256 b8473092127bfa6fb54fd08814022cd17bfd9899a0ea7c84f380748f3bac4487

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e4b20164809b21966b63e063f894927bc85391e60d0a96fa0bb552090f1319c
MD5 c34e2d6040a28246a4c95c121d17641f
BLAKE2b-256 13bc2647d01d8a16af04a788de838261ce49be563579bef50ca36c4ef9ca879a

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b75f0fc7a64a95027c6f0c70f17969299bdf2b6a85e342b29fc23be2788bad6f
MD5 c22b9d1a5e95b9fc35ff915de85da0b3
BLAKE2b-256 32fda3d3ef4f6d3255b9ed11320ec1cefd6368781bd79b534295a87c505f713d

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ef7119ebc9b76d5e37c330596616c697d1957779c916aec30cefd28df808f796
MD5 93f334630df770d7bcafe9b7d479583d
BLAKE2b-256 07ac4ff0e2892d7eacfe566da17e269ba666f1702684939cd17dc957c876e9ac

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 144a3b8c7cbdd301e1b8cd7dd33e3cbfe7b011df2bebd45b84bacc8cb490302d
MD5 583b47787e14c252e20bc9bdd7ce86c3
BLAKE2b-256 572926daa9c232e03d3cc0d3fbc5e14b80912ac672d4d7081713ede7c0996f52

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 73d9507a547202f0dd0672e529ce3ca45582d152369c684a9ce75677ce5ae089
MD5 f00ebf97eca26b860ff3df4f3c82549f
BLAKE2b-256 ffb2fb788cee476215ed226bd8f72c10c13d457e0236e12d285ab4d1eeb0b7ac

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 daeed2502ddf1f2b29ec8da2fe2ea82807a5c4acf869608ce6c476db8171d070
MD5 667a63ac7b5ba2ca18fdf1ff8bc3ba58
BLAKE2b-256 7c2527f9286d34728fde61627afb8193b3f8f7ba83e329e4f44e56cf6ffa375d

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 200.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 4fdb59cfa00e10c82e09d1c32a9ce08a38bd29496ba20a73cd7f498e3a0a5024
MD5 5f505dbb25758797c0f0b40cb3845019
BLAKE2b-256 d0c44c75b9b4a9c3842d541d98dee512c2f77e4a2b15bc824a30a92554416a2e

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.4-cp310-none-win32.whl
  • Upload date:
  • Size: 200.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp310-none-win32.whl
Algorithm Hash digest
SHA256 04cd7f4a4f4cd2fe43d104eb70e7435c6fcbdde7aa0cde4230e444fbc66924d3
MD5 a564f1bb29fc599868c10a379fe29e05
BLAKE2b-256 54c261d64d600c2880de9846d44233d03afd8bfdfacb8d00aa22fcd9852209ba

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0a31c2cab0ba86998205c2eba550c178a8b4ee7905cadeb402eed45392edb178
MD5 5a4e3a708a362202bf9884fe36685c50
BLAKE2b-256 5d18d032438446db2171081fe4891c8fdfda5e987bda8c358aa9b08bbf10b2d6

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b39747f8e57728b9d8c26bd1d28e9a31c028717617a5938a179244b9436c0b31
MD5 936b059dbb0603d078a82e0d9a494eaa
BLAKE2b-256 b30e1579c6e43a494e4869e44229a0e5d12fbd0329ec17ae6915d3a3cec0a6a5

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4974cc2ebb53196081fef96743c02c8b073242b20a40b65d2aa2365ba8c949df
MD5 85969bb7d37be25ade623703f75ec02b
BLAKE2b-256 c949045ede311c0997692ee3467f09e238ef1b537d1b70a2292447d9df511c16

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 224ad19dcdc21bb220d893807f2563e219319a8891ead3c54243b51a4882d767
MD5 046a462156b03c9ef348918e46f8c54f
BLAKE2b-256 ed3c16932cacbe5802e52761e37a8cf706545720207402b7cf596f1098ba8cd6

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c2fb7963c17ab347428412a0689f5c89ea480f5d5f7ba3e46c6c2f14f3159ee4
MD5 5345b42d395c44aa5bca1fa84239b0b9
BLAKE2b-256 65797388b3833ed53725574cff9616f62bacadc7cfdbc0cedfba64138f2d6a9e

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fb429c56ea645e084e34976c2ea0efca7661ee961f61e51405f28bc5a9d1fb24
MD5 86e9ce70559e2ecdc1e2bdae62fd2c31
BLAKE2b-256 41ba833d92a6503251b3b6b7ff421d0316c56cfa078089824f7aa3bf15c24d37

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32a9e0f140c7d0d52f79553cabd1a471f6a4f187c59742239939f1139258a053
MD5 ca7f8ac328e6b4149b40ab04392459b4
BLAKE2b-256 b416e8c8184c6f4fd6d454eba919ecf587bd982627f600860b33fd1699773dd3

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 2e83ec1ee66d83b558a6d273d8a01b86563daa60bea9bc040e2c1cb8008de61f
MD5 d3cc831d2c68f04dcd5d0a8dd2e01282
BLAKE2b-256 8a1656adc62fe8b34389b9b77b88f97e9b377eb56cff5cbb367c9568566dc546

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 200.7 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 915da36bc93ef0c659fa50fe7939d4f208804ad252fc4fc8d55adbbb82293c48
MD5 7662a78436317e7fbfa724d50354f4c3
BLAKE2b-256 a51c26bb8569b30452d694f13cb1c6ccf180b76e6232c8424ef2a05647ab9aa6

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.4-cp39-none-win32.whl
  • Upload date:
  • Size: 200.1 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp39-none-win32.whl
Algorithm Hash digest
SHA256 b5b5038187b74e2d33e5caee8a7e83ddeb6a21da86837fa2aac95c69aeb366e6
MD5 bbbd2d9fef6945b02c9638a912985bc6
BLAKE2b-256 70c9a641e71131b3dfc9ab0b8c3d38e2816847976eec51091123b7d84619dfc1

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c4fcd1ac0b7850f85398fd9fdbc7150ac4e82d2ae6754cc6acaf49ca7c30d79a
MD5 e14d011b073cbf83d9ef18770783a3f5
BLAKE2b-256 c27ad3ebbaf127f0fe3399cb7f66c985ca0e60301fc2b43851cb367701754407

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 a4f12e9ec62679c3f2717d9ec41b497a2c2af0b1361229db0dc86ef078a4c034
MD5 d951bbe2839737fb54779f6724393810
BLAKE2b-256 71911a1be793009719e7249c5b2a4fbbdd6af6266ba897ee2e45b70f4160f0d0

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 264637cad35a1755ab90a8ea290076d444deda20753e55a0eb75496a4645f7bc
MD5 6fb99ae39292700ca402bb6b1bb916a8
BLAKE2b-256 3cae649c8ed0a24258f6b810f9b132d29bcade30fd05d5133eef2f22192da681

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9c32dea3b27a97ac88783c1eb61ccb531865bf478a37df3707cbc96ca8f34a04
MD5 0b870d3a69dd52f98af59494b1765b8c
BLAKE2b-256 2f4a55cba8c1cda8e8ec563fa86662d819babbcfbaa60803fd423069707eb728

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f0a4cf31bfa94cd235aa50030bef3df529e4eb2893ea6a7771c0fb087e4e53b2
MD5 3ab26bd88ac51167e2d9cd6efe168464
BLAKE2b-256 d9e002f033b8693df15889f9916594a8edf85605cfbbcc7a1eed63c6b4ce2d62

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f009c1a02773bdecdd1157036918fef1da47f7193d4ad599c9edb1e1960a0491
MD5 511f9b8894c0d146b92151000bb7e4a3
BLAKE2b-256 80d9c78ceee71bf14ad98a94ab583f6ce10cc453a9060f32f3832879ab916d83

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5e876ef36801b3d4d3a4b0613b6144b0b47f13f3043fd1fcdfafd783c174b538
MD5 a95539fce34a386ca12d80ce0e672709
BLAKE2b-256 fa90432664faf210373193dabe9b56e8e65861331eb9fd18677a73a131e415ba

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 2f57ccb50e9e123709e9f2d7b1a9e09e694e49d1fa5c5585e34b8e3f01929dc3
MD5 6c404214a326f3309470a89951c2e6b5
BLAKE2b-256 023b59114b3d2698913f970577b4928689cf2ee4c3a6107618d9c613b817bbd0

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 200.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 336ec8471102851f0699198031924617b7a77baadea889df3ffda6000bd59f4c
MD5 8c432fa4cd160d9387261c5351fabe16
BLAKE2b-256 362c002a263f59f7acce23a5f29d3342a30e50c7360bfc6873c970324a1f5eee

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.4-cp38-none-win32.whl
  • Upload date:
  • Size: 200.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp38-none-win32.whl
Algorithm Hash digest
SHA256 94d15ee45c2aaed334688e511aa73b4681f7c08a0810884c6b3ae5824dea1222
MD5 8a8f949c5db37b404fafbae739dfdd72
BLAKE2b-256 a526ac435fb85e3bd1f37d65cc409dcaf4d4e8b7363addfa33811f1155dd72e9

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9ab3720fba68cc1c0bad00803d2c5e2c70177da5af12c45e18cc4d14426d56d8
MD5 ffaf9ab0c406ea411c5a234b26569249
BLAKE2b-256 b4f81f19f72ff5c6d108d9ee5c6c7c702db5cc9400d79be435b4bc5750588d67

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 53b417cc9465dbb42ec9cd7be744a921a0ce583556315d172a246d6e71aa043b
MD5 a90ec778dcb31dd47fde8aab1621905b
BLAKE2b-256 e43971e892facd98ad64860403b317b70f808826c05a319482aebcd0ee8a1353

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0725260a12d7102b6e66f9925a027f55567255d8455f8288b02d5eedc8925c3e
MD5 8e8c33549586e0d095cca5063894f7ac
BLAKE2b-256 174f98e4100b74bc0083ffee1b07aeda0cc01cba7a781b0a4587a35f7251f983

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 edcbccfe852d1d3d56cc8bfc5fa3688c866619328a73cb2394e79b29b4ab24d2
MD5 6af4f0fe515b28432df45650d09396db
BLAKE2b-256 5c6433ca2d56ae69d698959e9093b004014ce56176815a6d1fa3f565256427bf

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 161cc72dd3ff569fd67da4af3a23c0c837029085300f0cebc287586ae3b559e0
MD5 c4a277476dc614b1b38dae5f0d95c58a
BLAKE2b-256 40b95533c4e3fbe5004fa6a9ee0faca6dde58ae17aa4fc549c706e24cd9e1479

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b749d06a3d84ac27311cb85fb5e8f965efd1c5f27556ad8fcfd1853c323b4d54
MD5 88f393236f6fa29423557ec46b2e4b2e
BLAKE2b-256 27802fe6ae9bbd101a332b249ed1f1831719409e277936c8d15a5468d9afcebc

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c65df12f92e771361dca45765fcac3d97491799ee8ab3c6c5ecf0155a397a313
MD5 71cab6043be9986ecd5d95c8c1378177
BLAKE2b-256 710c7888d8afffe24cbf02751b9ac9d3a55fe5bc07705b378dfdc585944e3683

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 a7d029fc34a516f7eae29b778b30371fcb621134b2acfe4c51c785102aefc6cf
MD5 7d214974c2fb4d297ca8e79dbfdb0d33
BLAKE2b-256 334f45004de77b1acd603b2338818a646f4cda9c636bc0ab20adcb36b9c4f157

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.4-cp37-none-win_amd64.whl
  • Upload date:
  • Size: 200.5 kB
  • Tags: CPython 3.7, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 3d947366127abef192419257eb7db7fcee0841ced2b49ccceba43b65e9ce5e3f
MD5 ed010e6f0b893321a2356aa5b7580c40
BLAKE2b-256 be2296aee9966dc7a3b5eaed302d50085d7104d24a1f399be96e367560897751

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.4-cp37-none-win32.whl
  • Upload date:
  • Size: 199.9 kB
  • Tags: CPython 3.7, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.2.0

File hashes

Hashes for orjson-3.9.4-cp37-none-win32.whl
Algorithm Hash digest
SHA256 bcda6179eb863c295eb5ea832676d33ef12c04d227b4c98267876c8322e5a96e
MD5 edb03a46bd2c72a4731930508531cadc
BLAKE2b-256 17183d9ef2fcf90bc063fd803b5a43025a2752a3273dae791f27ca614a9be851

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 220ca4125416636a3d6b53a77d50434987a83da243f9080ee4cce7ac6a34bb4a
MD5 f41c7d997931bab8448ba9e0999f56f2
BLAKE2b-256 375f0c369a406ec38c3ace52e429b1f6b2864cffefe17e055309bedf12609d66

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c416c50f63bfcf453b6e28d1df956938486191fd1a15aeb95107e810e6e219c8
MD5 4c622bbf3f444d7ddfe73e98100f7fff
BLAKE2b-256 08e2f3c804aa9a724a657689c23237738c12e1d62f9d7a144b7e7b28dc5dd71f

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bae10f4e7a9145b120e37b6456f1d3853a953e5131fe4740a764e46420289f5
MD5 916595d83839f244b573d46e07136bdf
BLAKE2b-256 28b9f846ce030a2ab455c5b61a0505cc23fcbb529cadfbca5bdda9c9741e0602

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 644728d803200d7774164d252a247e2fcb0d19e4ef7a4a19a1a139ae472c551b
MD5 d9645f1be4fa807b3d57d21f284fc427
BLAKE2b-256 90e12ed5c25a211ee7f3ebb933de01c20552f48b0f38fb45656e357747992ebf

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1fb36efdf2a35286fb87cfaa195fc34621389da1c7b28a8eb51a4d212d60e56d
MD5 ed7bd45ff6098111dbbe3da80a08766f
BLAKE2b-256 cbc94bd2292fb45623b38b7bab8131cc0b7e0f310396e5e4ff2ffbb651594867

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ba21fe581a83555024f3cfc9182a2390a61bc50430364855022c518b8ba285a4
MD5 cb74127b47dc7d2ff7ea77b5a2719107
BLAKE2b-256 ffedaae982068ee23d43c5c60b52abf3f958c43646aadca5828e8edda027e4e9

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 004f0d307473af210717260dab2ddceab26750ef5d2c6b1f7454c33f7bb69f0c
MD5 2caef2f84e185489b7a2bfa55e33a55c
BLAKE2b-256 451fbb46dbcdae9c08b34a184b602c114123f750450180f0b795b8a46ed5596a

See more details on using hashes here.

File details

Details for the file orjson-3.9.4-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.4-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 149d1b7630771222f73ecb024ab5dd8e7f41502402b02015494d429bacc4d5c1
MD5 df9dd1af1ab92aa9a49ac026fe813312
BLAKE2b-256 40a5790e7724893130a086b53f948097d24263d17c29e7835205e4f8019e844c

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