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 相关工具。

此模块提供了一些功能

  1. 一个方便的函数,可以将对象转换为可以 JSON 序列化的内容。请参阅 to_primitive()

  2. 围绕 loads()dumps() 的包装器。 dumps() 包装器会在需要时自动使用 to_primitive()

  3. 如果可用 anyjson,则此设置将使用 loads()dumps() 包装器来设置 anyjson

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 的 strunicode 实例) 反序列化

参数:
  • 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 相关工具。

此模块提供了一些功能

  1. 一个方便的注册表,可以将对象转换为可以 msgpack 序列化的内容。请参阅 HandlerRegistry

  2. 围绕 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 对象/迭代器。

  • setfrozenset 容器。

  • netaddr.IPAddress 对象(仅当可以导入 netaddr 时)。

  • xmlrpclib.DateTime datetime 对象。

版本 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 格式的 s str 反序列化为 Python 对象。

版本 1.5 中更改: 添加了 registry 参数。