PySide6.QtCore.QCborMap

class QCborMap

QCborMap 类用于保存可在CBOR中表示的关联容器。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

此类可用于在CBOR中保存一个关联容器,即键和值类型之间的映射。CBOR是简洁二进制对象表示法,是一种非常紧凑的二进制数据编码形式,是JSON的超集。它由IETF受限RESTful环境(CoRE)工作组创建,并在许多新的RFC中使用。它旨在与CoAP协议一起使用。

与JSON和QVariantMap不同,CBOR映射的键可以是任何类型,而不仅仅是字符串。因此,QCborMap实际上是QCborValue键到QCborValue值元素的映射。

然而,对于所有接受键参数的成员函数,QCborMap 提供了可以高效处理整数和字符串的重载。事实上,鼓励使用整数键,因为它们占用的传输字节更少,并且编码和解码更简单。已知由IETF CoRE WG设计的新协议专门与CBOR一起工作,使用这些整数键。

QCborMap 不是排序的,因此,搜索键的复杂度是线性的(O(n))。QCborMap 实际上保持了元素插入的顺序,这意味着通过仔细按排序顺序插入元素,可以创建排序的 QCborMaps。CBOR 不要求排序,但建议这样做。

QCborMap 也可以与 QVariantMapQJsonObject 相互转换。然而,在执行转换时,任何非字符串键将使用单向方法进行字符串化,转换回 QCborMap 时将无法还原。

另请参阅

QCborArray QCborValue QJsonDocument QVariantMap 解析和显示CBOR数据 序列化转换器 保存和加载游戏

__init__()

构造一个空的CBOR映射对象。

另请参阅

isEmpty()

__init__(other)
Parameters:

其他QCborMap

创建一个QCborMap对象,它是other的副本。

clear()

清空此映射。

另请参阅

isEmpty()

compare(other)
Parameters:

其他QCborMap

Return type:

整数

比较此映射和other,依次比较每个元素,并返回一个整数,指示此映射是否应排序在other之前(如果结果为负)或之后(如果结果为正)。如果此函数返回0,则两个映射相等并包含相同的元素。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关CBOR排序顺序的更多信息,请参见compare()

另请参阅

compare() compare() operator==()

contains(key)
Parameters:

keyQLatin1String

Return type:

布尔

contains(key)
Parameters:

keyQCborValue

Return type:

布尔

如果此映射包含由键 key 标识的键值对,则返回 true。

另请参阅

value(const QCborValue &) operator[](const QCborValue &) find(const QCborValue &) remove(const QCborValue &) contains(qint64) remove(QLatin1StringView) remove(const QString &)

contains(key)
Parameters:

key – str

Return type:

布尔

这是一个重载函数。

如果此映射包含由键 key 标识的键值对,则返回 true。

另请参阅

value(const QString &) operator[](const QString &) find(const QString &) remove(const QString &) contains(qint64) remove(QLatin1StringView) remove(const QCborValue &)

contains(key)
Parameters:

key – int

Return type:

布尔

如果此映射包含由键key标识的键值对,则返回true。CBOR建议使用整数键,因为它们占用更少的空间并且编码和解码更简单。

另请参阅

value(qint64) operator[](qint64) find(qint64) remove(qint64) contains(QLatin1StringView) remove(const QString &) remove(const QCborValue &)

empty()
Return type:

布尔

isEmpty() 的同义词。此函数是为了与使用标准库 API 的通用代码兼容而提供的。

如果此映射为空(size() == 0),则返回true。

另请参阅

isEmpty() size()

static fromJsonObject(o)
Parameters:

oQJsonObject

Return type:

QCborMap

obj对象中找到的所有JSON项使用QCborValue::fromJson()转换为CBOR,并返回由这些元素组成的映射。

这种转换是无损的,因为CBOR类型系统是JSON的超集。此外,此函数返回的映射可以通过使用toJsonObject()转换回原始的obj

static fromVariantHash(hash)
Parameters:

hash – 字典,键类型为 .QString,值类型为 QVariant。

Return type:

QCborMap

hash中的所有项目使用fromVariant()转换为CBOR,并返回由这些元素组成的映射。

QVariant的转换并非完全无损。更多信息请参阅fromVariant()中的文档。

static fromVariantMap(map)
Parameters:

map – 字典,键类型为 .QString,值类型为 QVariant。

Return type:

QCborMap

map中的所有项目使用fromVariant()转换为CBOR,并返回由这些元素组成的映射。

QVariant的转换并非完全无损。更多信息请参阅fromVariant()中的文档。

isEmpty()
Return type:

布尔

如果此映射为空(即size()为0),则返回true。

另请参阅

size() clear()

keys()
Return type:

QCborValue的列表

返回此映射中所有键的列表。

另请参阅

keys() keys()

__ne__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较 lhsrhs 映射,依次比较每个元素,如果两个映射包含任何不同的元素或元素顺序不同,则返回 true,否则返回 false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关Qt中CBOR相等的更多信息,请参见compare()

另请参阅

compare() operator==() operator==() operator==() operator

__ne__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

__lt__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较 lhsrhs 映射,依次比较每个元素,如果 lhs 映射应该在 rhs 之前排序,则返回 true,否则返回 false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关CBOR排序顺序的更多信息,请参见compare()

另请参阅

compare() operator==() operator==() operator==() operator!=()

__lt__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

__le__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较 lhsrhs 映射,依次比较每个元素,如果 lhs 映射应该在 rhs 之前排序,或者如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关CBOR排序顺序的更多信息,请参见compare()

另请参阅

compare() operator==() operator==() operator==() operator!=()

__le__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

__eq__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较 lhsrhs 映射,依次比较每个元素,如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关Qt中CBOR相等的更多信息,请参见compare()

另请参阅

compare() operator==() operator!=() operator

__eq__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

__gt__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较lhsrhs映射,依次比较每个元素,如果lhs映射应在rhs之后排序,则返回true,否则返回false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关CBOR排序顺序的更多信息,请参见compare()

另请参阅

compare() operator==() operator==() operator==() operator!=()

__gt__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

__ge__(rhs)
Parameters:

rhsQCborMap

Return type:

布尔

比较 lhsrhs 映射,依次比较每个元素,如果 lhs 映射应在 rhs 之后排序,或者如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。

请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。

有关CBOR排序顺序的更多信息,请参见compare()

另请参阅

compare() operator==() operator==() operator==() operator!=()

__ge__(rhs)
Parameters:

rhsQCborValue

Return type:

布尔

operator(key)
Parameters:

keyQLatin1String

Return type:

QCborValue

operator(key)
Parameters:

keyQCborValue

Return type:

QCborValue

返回此映射中与键key对应的QCborValue元素(如果存在)。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,使用此函数无法区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,则此函数返回哪个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。

operator[](qint64), operator[]( QLatin1StringView ), operator[](const QCborOperator[] &)

另请参阅

value(const QCborValue &) find(const QCborValue &) constFind(const QCborValue &) remove(const QCborValue &) contains(const QCborValue &)

operator(key)
Parameters:

key – str

Return type:

QCborValue

这是一个重载函数。

返回此映射中与键key对应的QCborValue元素(如果存在)。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,则此函数返回哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。

operator[](qint64), operator[]( QLatin1StringView ), operator[](const QCborOperator[] &)

另请参阅

value(const QString &) find(const QString &) constFind(const QString &) remove(const QString &) contains(const QString &)

operator(key)
Parameters:

key – int

Return type:

QCborValue

返回此映射中与键key对应的QCborValue元素(如果存在)。CBOR建议使用整数键,因为它们占用更少的空间并且编码和解码更简单。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,使用此函数无法区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,则此函数返回哪个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

operator[]( QLatin1StringView ), operator[](const QString &), operator[](const QCborOperator[] &)

另请参阅

value(qint64) find(qint64) constFind(qint64) remove(qint64) contains(qint64)

remove(key)
Parameters:

keyQLatin1String

remove(key)
Parameters:

keyQCborValue

如果找到,从映射中移除键 key 和对应的值。如果映射中不包含此键,此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

remove(qint64), remove( QLatin1StringView ), remove(const QString &)

另请参阅

value(const QCborValue &) operator[](const QCborValue &) find(const QCborValue &) contains(const QCborValue &)

remove(key)
Parameters:

key – str

这是一个重载函数。

如果找到,从映射中移除键 key 及其对应的值。如果映射中不包含此键,则此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

remove(qint64), remove( QLatin1StringView ), remove(const QCborValue &)

另请参阅

value(const QString &) operator[](const QString &) find(const QString &) contains(const QString &)

remove(key)
Parameters:

key – int

如果找到,从映射中移除键 key 及其对应的值。如果映射中不包含此键,此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。

remove( QLatin1StringView ), remove(const QString &), remove(const QCborValue &)

另请参阅

value(qint64) operator[](qint64) find(qint64) contains(qint64)

size()
Return type:

整数

返回此映射中的元素数量。

另请参阅

isEmpty()

swap(other)
Parameters:

其他QCborMap

交换此映射和other的内容。

take(key)
Parameters:

keyQLatin1String

Return type:

QCborValue

take(key)
Parameters:

keyQCborValue

Return type:

QCborValue

从映射中移除键 key 及其对应的值并返回该值(如果找到)。如果映射中不包含该键,则此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

另请参阅

value(const QCborValue &) operator[](const QCborValue &) find(const QCborValue &) contains(const QCborValue &) take(QLatin1StringView) take(const QString &) take(qint64) insert()

take(key)
Parameters:

key – str

Return type:

QCborValue

从映射中移除键 key 及其对应的值并返回该值(如果找到)。如果映射中不包含该键,则此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

另请参阅

value(const QString &) operator[](const QString &) find(const QString &) contains(const QString &) take(QLatin1StringView) take(qint64) take(const QCborValue &) insert()

take(key)
Parameters:

key – int

Return type:

QCborValue

从映射中移除键 key 及其对应的值并返回该值(如果找到)。如果映射中不包含此键,则此函数不执行任何操作。

如果映射包含多个等于key的键,则此函数将移除哪一个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。

另请参阅

value(qint64) operator[](qint64) find(qint64) contains(qint64) take(QLatin1StringView) take(const QString &) take(const QCborValue &) insert()

toCborValue()
Return type:

QCborValue

显式构造一个表示此映射的QCborValue对象。通常不需要此函数,因为QCborValue有一个用于QCborMap的构造函数,因此转换是隐式的。

QCborMap转换为QCborValue允许它在任何可以使用QCborValue的上下文中使用,包括作为QCborMap中的键和映射类型,以及toCbor()

另请参阅

QCborValue(const QCborMap &)

toJsonObject()
Return type:

QJsonObject

递归地将此映射中的每个QCborValue值使用toJsonValue()转换为JSON,并为所有非字符串的键创建字符串键,然后返回由这些关联组成的相应QJsonObject

请注意,CBOR 包含比 JSON 更丰富和广泛的类型集,因此在此转换过程中可能会丢失一些信息。有关应用了哪些转换的更多详细信息,请参阅 toJsonValue()

将映射键转换为字符串

JSON对象被定义为具有字符串键,与CBOR不同,因此将QCborMap转换为QJsonObject将意味着键值的“字符串化”步骤。转换将使用上述对标签和扩展类型的特殊处理,并将其他类型转换如下:

类型

转换

布尔

“真”和“假”

空值

“null”

未定义

“undefined”

整数

数字的十进制字符串形式

Double

数字的小数字符串形式

字节数组

除非有不同标记(见上文),否则编码为Base64url

数组

替换为其诊断 符号的紧凑形式

Map

替换为其Diagnostic notation的紧凑形式

标签和扩展类型

标签号被删除,标记值被转换为字符串

toVariantHash()
Return type:

字典的键类型为 .QString,值类型为 QVariant。

将CBOR值转换为QVariant,使用toVariant()并“字符串化”此映射中的所有CBOR键,返回从该关联列表生成的QVariantHash

QVariantMaps 具有字符串键,与 CBOR 不同,因此将 QCborMap 转换为 QVariantMap 将意味着键值的“字符串化”步骤。详情请参阅 toJsonObject()

此外,转换为QVariant并不是完全无损的。更多信息请参见toVariant()中的文档。

toVariantMap()
Return type:

字典的键类型为 .QString,值类型为 QVariant。

将CBOR值转换为QVariant,使用toVariant()并“字符串化”此映射中的所有CBOR键,返回从该关联列表生成的QVariantMap

QVariantMaps 具有字符串键,与 CBOR 不同,因此将 QCborMap 转换为 QVariantMap 将意味着键值的“字符串化”步骤。详情请参阅 toJsonObject()

此外,转换为QVariant并不是完全无损的。更多信息请参见toVariant()中的文档。

value(key)
Parameters:

keyQLatin1String

Return type:

QCborValue

value(key)
Parameters:

keyQCborValue

Return type:

QCborValue

返回此映射中与键key对应的QCborValue元素(如果存在)。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,则此函数返回哪个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

值(qint64), 值( QLatin1StringView ), 值(const QString &)

另请参阅

operator[](const QCborValue &) find(const QCborValue &) constFind(const QCborValue &) remove(const QCborValue &) contains(const QCborValue &)

value(key)
Parameters:

key – str

Return type:

QCborValue

这是一个重载函数。

返回此映射中与键key对应的QCborValue元素(如果存在)。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,则此函数返回哪个键是未定义的。QCborMap不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。

值(qint64), 值( QLatin1StringView ), 值(const QCborValue &)

另请参阅

operator[](const QString &) find(const QString &) constFind(const QString &) remove(const QString &) contains(const QString &)

value(key)
Parameters:

key – int

Return type:

QCborValue

返回此映射中与键key对应的QCborValue元素(如果存在)。CBOR建议使用整数键,因为它们占用更少的空间并且编码和解码更简单。

如果映射中不包含键key,此函数将返回一个包含未定义值的QCborValue。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。

如果映射包含多个等于key的键,函数返回将引用哪一个键是未定义的。QCborMap不允许插入重复的键,但通过解码包含重复键的CBOR流可以创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。

值( QLatin1StringView ), 值(const QString &), 值(const QCborValue &)

另请参阅

operator[](qint64) find(qint64) constFind(qint64) remove(qint64) contains(qint64)