API 参考¶
base64¶
用于编码和解码 Base64 的工具。
在 1.10 版本中添加。
- oslo_serialization.base64.decode_as_bytes(encoded)¶
解码一个 Base64 编码的字符串。
- 参数:
encoded – 要解码的字节或文本 Base64 编码字符串
- 返回值:
解码后的字节字符串 (bytes)
使用 decode_as_text() 获取解码后的文本字符串。
如果输入无效(或填充不正确),则会引发 TypeError。
- oslo_serialization.base64.decode_as_text(encoded, encoding='utf-8')¶
解码一个 Base64 编码的字符串。
解码 Base64 字符串,然后从 encoding (默认 UTF-8) 解码结果。
- 参数:
encoded – 要解码的字节或文本 Base64 编码字符串
- 返回值:
解码后的文本字符串 (bytes)
使用 decode_as_bytes() 获取解码后的字节字符串。
- oslo_serialization.base64.encode_as_bytes(s, encoding='utf-8')¶
使用 Base64 编码一个字符串。
如果 s 是文本字符串,则首先将其编码为 encoding (默认 UTF-8)。
- 参数:
s – 要编码的字节或文本字符串
encoding – 如果 s 是文本字符串,则用于编码 s 的编码
- 返回值:
Base64 编码的字节字符串 (bytes)
使用 encode_as_text() 获取 Base64 编码的文本字符串。
- oslo_serialization.base64.encode_as_text(s, encoding='utf-8')¶
使用 Base64 编码一个字符串。
如果 s 是文本字符串,则首先将其编码为 encoding (默认 UTF-8)。
- 参数:
s – 要编码的字节或文本字符串
encoding – 如果 s 是文本字符串,则用于编码 s 的编码
- 返回值:
Base64 编码的文本字符串 (Unicode)
使用 encode_as_bytes() 获取 Base64 编码的字节字符串。
jsonutils¶
JSON 相关工具。
此模块提供了一些功能
一个方便的函数,可以将对象转换为可以 JSON 序列化的内容。请参阅
to_primitive()。围绕
loads()和dumps()的包装器。dumps()包装器会在需要时自动使用to_primitive()。
- oslo_serialization.jsonutils.dump(obj, fp, *args, **kwargs)¶
将
obj作为 JSON 格式的流序列化到fp- 参数:
obj – 要序列化的对象
fp – 具有
.write()支持的文件类对象default – 一个函数,返回对象的序列化版本,默认使用
to_primitive()。args – 额外参数,请参阅 json.dump 的文档
kwargs –
额外的命名参数,请参阅 json.dump 的文档
版本 1.3 中更改: default 参数现在默认使用
to_primitive()。
- oslo_serialization.jsonutils.dump_as_bytes(obj, default=<function to_primitive>, encoding='utf-8', **kwargs)¶
将
obj序列化为 JSON 格式的bytes。- 参数:
obj – 要序列化的对象
default – 一个函数,返回对象的序列化版本,默认使用
to_primitive()。encoding – 用于编码序列化的 JSON 输出的编码
kwargs – 额外的命名参数,请参阅 json.dumps 的文档
- 返回值:
json 格式的字符串
在 1.10 版本中添加。
- oslo_serialization.jsonutils.dumps(obj, default=<function to_primitive>, **kwargs)¶
将
obj序列化为 JSON 格式的str。- 参数:
obj – 要序列化的对象
default – 一个函数,返回对象的序列化版本,默认使用
to_primitive()。kwargs –
额外的命名参数,请参阅 json.dumps 的文档
- 返回值:
json 格式的字符串
使用 dump_as_bytes() 确保在 Python 2 和 Python 3 上结果类型为
bytes。
- oslo_serialization.jsonutils.load(fp, encoding='utf-8', **kwargs)¶
将
fp反序列化为 Python 对象。- 参数:
fp – 具有
.read()支持的文件类对象encoding – 用于解释字符串的编码
kwargs – 额外的命名参数,请参阅 json.loads 的文档
- 返回值:
python 对象
- oslo_serialization.jsonutils.loads(s, encoding='utf-8', **kwargs)¶
将
s(包含 JSON 的str或unicode实例) 反序列化- 参数:
s – 要反序列化的字符串
encoding – 用于解释字符串的编码
kwargs –
额外的命名参数,请参阅 json.loads 的文档
- 返回值:
python 对象
- oslo_serialization.jsonutils.to_primitive(value, convert_instances=False, convert_datetime=True, level=0, max_depth=3, encoding='utf-8', fallback=None)¶
将复杂对象转换为基本类型。
方便进行 JSON 序列化。我们可以选择性地处理实例,但由于这是一个递归函数,我们可能会遇到循环数据结构。
为了处理循环数据结构,我们可以跟踪在一个集合中访问的实际对象,但并非所有对象都是可哈希的。相反,我们只是跟踪对象检查的深度,并且不会深入太多。
因此,
convert_instances=True具有损失性……请注意。如果对象无法转换为基本类型,则如果未设置 fallback,则返回未更改的对象,否则返回 fallback(value)。
版本 2.22 中更改: 添加了 fallback 参数。
版本 1.3 中更改: 支持 UUID 编码。
版本 1.6 中更改: 现在也对字典键进行编码。
msgpackutils¶
MessagePack 相关工具。
此模块提供了一些功能
一个方便的注册表,可以将对象转换为可以 msgpack 序列化的内容。请参阅
HandlerRegistry。围绕
loads()和dumps()的包装器。dumps()包装器会在需要时自动使用default_registry。
1.3 版本中添加。
- class oslo_serialization.msgpackutils.HandlerRegistry¶
type 特定 msgpack 处理程序扩展的注册表。
请参阅:https://github.com/msgpack/msgpack/blob/2025.2/spec.md#formats-ext
请注意,由于 msgpack python 库的当前限制,我们目前无法在不将其转换为列表的情况下转储/加载元组。
这可能会在以下位置修复:https://github.com/msgpack/msgpack-python/pull/100
版本 1.5 中添加。
- copy(unfreeze=False)¶
深度复制给定的注册表(及其处理程序)。
- get(identity)¶
获取给定数字标识的处理程序(或无)。
- match(obj)¶
将注册表处理程序与给定的对象匹配(或无)。
- max_value = 127¶
应用程序可以将 0 到 127 分配给存储应用程序(或库)特定的类型处理程序;请参阅上述范围,了解此库保留了哪些内容以及未保留哪些内容。
- min_value = 0¶
应用程序可以将 0 到 127 分配给存储应用程序(或库)特定的类型处理程序;请参阅上述范围,了解此库保留了哪些内容以及未保留哪些内容。
- non_reserved_extension_range = Interval(33, 127)¶
这些范围始终保留供构建自己的类型特定处理程序的应用程序使用(此范围内的扩展的含义通常取决于应用程序)。
- register(handler, reserved=False, override=False)¶
注册扩展处理程序以处理其关联的类型。
- reserved_extension_range = Interval(0, 32)¶
这些范围始终保留供
oslo.serialization及其自身的插件使用扩展(这些扩展旨在通常适用于所有 python)。
- class oslo_serialization.msgpackutils.Interval(min_value, max_value)¶
小型且简单的不可变整数/浮点数区间类。
区间检查包含最小值/最大值边界。
- oslo_serialization.msgpackutils.default_registry = <oslo_serialization.msgpackutils.HandlerRegistry object>¶
默认的、只读/冻结的注册表,在未提供任何注册表时将被使用。
此注册表包含以下内容的 msgpack 扩展:
DateTime对象。Date对象。UUID对象。itertools.count对象/迭代器。set和frozenset容器。netaddr.IPAddress对象(仅当可以导入netaddr时)。xmlrpclib.DateTimedatetime 对象。
版本 1.5 中添加。
- oslo_serialization.msgpackutils.dump(obj, fp, registry=None)¶
将
obj序列化为 messagepack 格式的流到fp。版本 1.5 中更改: 添加了 registry 参数。
- oslo_serialization.msgpackutils.dumps(obj, registry=None)¶
将
obj序列化为 messagepack 格式的str。版本 1.5 中更改: 添加了 registry 参数。
- oslo_serialization.msgpackutils.load(fp, registry=None)¶
将
fp反序列化为 Python 对象。版本 1.5 中更改: 添加了 registry 参数。
- oslo_serialization.msgpackutils.loads(s, registry=None)¶
将 messagepack 格式的
sstr反序列化为 Python 对象。版本 1.5 中更改: 添加了 registry 参数。