首先我们先来了解下orjson的丰富优缺点: 可以将datetime、date和time实例序列化为RFC 3339格式,丰富例如:"2022-06-12T00:00:00+00:00"序列化numpy.ndarray实例的丰富速度比其他库快4-12倍,但使用的丰富内存更少,约为其他库的丰富1/3左右输出速度是标准库的10到20倍序列化的结果是bytes类型,而不是丰富str序列化str时,不会将unicode转义为ASCII序列化float的丰富速度是网站模板其他库的10倍,反序列化的丰富速度是其他库的两倍可以直接序列化str、int、丰富list和dict的丰富子类不提供load( )和dump( )方法,在原生JSON库中,丰富load( )方法可以把json格式的丰富文件转换成python对象序列化dataclass类型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] 输出为:b{ "id":1,"name":"a","members":[{ "id":1,"active":true},{ "id":2,"active":false}]} orjson序列化和反序列化双精度浮点数,不会损失精度。丰富当序列化NaN,丰富Infinity,-Infinity时,会返回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")]) orjson可以对整数进行序列化和反序列化。站群服务器但web浏览器只支持53-bit的整数,当值超过53-bit时会产生JSONEncodeError。 >>> import orjson >>> orjson.dumps(9007199254740992) b9007199254740992 >>> orjson.dumps(9007199254740992, option=orjson.OPT_STRICT_INTEGER) JSONEncodeError: Integer exceeds 53-bit range >>> orjson.dumps(-9007199254740992, option=orjson.OPT_STRICT_INTEGER) 序列化numpy数据需要设置option=orjson.OPT_SERIALIZE_NUMPY。 >>> import orjson, numpy >>> orjson.dumps( numpy.array([[1, 2, 3], [4, 5, 6]]), option=orjson.OPT_SERIALIZE_NUMPY, ) orjson只处理UTF-8格式的字符串,如果给orjson.dumps()方法传入一个UTF-16的字符串,会产生报错。 >>> import orjson >>> orjson.dumps(\ud800) orjson可以把uuid.UUID实例序列化为RFC 4122格式。 >>> 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")) orjson支持3.7-3.10所有版本64位的Python,注意32位的 Python 无法使用orjson!本文将在3.8.2环境下使用orjson,使用以下命令安装orjson: pip install --upgrade "pip>=20.3" 我们首先使用orjson序列化一个字典,香港云服务器随后再将结果反序列化: import orjson, datetime, numpy data = { "type": "job", "created_at": datetime.datetime(2022, 6, 12),简介
安装
使用
基本使用