class QCborMap#

The QCborMap class is used to hold an associative container representable in 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 工作组设计的更新的协议,专门用于与 CBOR 一起使用,已知也使用它们。

QCborMap 未进行排序,因此查找键的复杂度为线性(O(n))。实际上,QCborMap 保持元素按插入顺序排序,这意味着在某些情况下可以按排序顺序插入元素以创建已排序列表。CBOR 不要求排序,但建议排序。

QCborMap 还可以转换为和从 QVariantMapQJsonObject . 然而,在执行转换时,任何非字符串键都将使用单向方法转换为字符串,并且不能通过转换回 QCborMap 而撤销转换。

另请参阅

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

__init__(other)#
参数:

otherQCborMap

创建一个与 other 相同的 QCborMap 对象。

__init__()

构建一个空的 CBOR 地图对象。

另请参阅

isEmpty()

clear()#

清空此映射。

另请参阅

isEmpty()

compare(other)#
参数:

otherQCborMap

返回类型:

int

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

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

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

另请参阅

compare() compare() operator==()

contains(key)#
参数:

QLatin1String

返回类型:

bool

contains(key)
参数:

QCborValue

返回类型:

bool

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

另请参阅

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

contains(key)
参数:

– str

返回类型:

bool

这是一个重载函数。

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

另请参阅

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

contains(key)
参数:

– int

返回类型:

bool

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

另请参阅

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

empty()#
返回类型:

bool

isEmpty()的别名。此函数提供以确保与使用标准库API的通用代码兼容。

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

另请参阅

isEmpty() size()

static fromJsonObject(o)#
参数:

oQJsonObject

返回类型:

QCborMap

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

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

static fromVariantHash(hash)#
参数:

hash – 带有QString键和QVariant值的字典。

返回类型:

QCborMap

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

QVariant 转换不是完全无损的。请参阅 fromVariant() 中的文档以获取更多信息。

static fromVariantMap(map)#
参数:

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

返回类型:

QCborMap

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

QVariant 转换不是完全无损的。请参阅 fromVariant() 中的文档以获取更多信息。

isEmpty()#
返回类型:

bool

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

另请参阅

size() clear()

keys()#
返回类型:

: QCborValue 的列表

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

另请参阅

keys() keys()

__ne__(other)#
参数:

otherQCborMap

返回类型:

bool

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

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

有关 Qt 中 CBOR 等价的更多信息,请参阅,compare() .

另请参阅

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

__lt__(other)#
参数:

otherQCborMap

返回类型:

bool

比较此映射和 other,按顺序比较每个元素,如果此映射应排在此映射之前,则返回 true,否则返回 false。

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

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

另请参阅

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

__eq__(other)#
参数:

otherQCborMap

返回类型:

bool

比较此映射和 other,按顺序比较每个元素,如果两个映射具有相同的元素且顺序相同,则返回 true,否则返回 false。

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

有关 Qt 中 CBOR 等价的更多信息,请参阅,compare() .

另请参阅

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

operator(key)#
参数:

– int

返回类型:

QCborValue

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

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

如果映射包含多个与 key 等键的键,则函数将返回哪个键是不确定的。 QCborMap 不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。

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

另请参阅

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

operator(key)
参数:

– str

返回类型:

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)
参数:

QLatin1String

返回类型:

QCborValue

operator(key)
参数:

QCborValue

返回类型:

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 &)

remove(key)#
参数:

QLatin1String

remove(key)
参数:

QCborValue

如果找到,则从映射中删除键 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)
参数:

– 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)
参数:

– int

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

如果映射中存在多个等于 key 的键,则该函数将删除哪个是不确定的。 QCborMap 不允许插入重复的键,但可以通过解码包含它们的 CBOR 流创建这样的映射。通常不允许这样操作,并且重复键通常表示发送者存在问题的指示。

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

另请参阅

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

size ( ) #
返回类型:

int

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

另请参阅

isEmpty()

swap ( other ) #
参数:

otherQCborMap

交换本地图与 other 的内容。

take ( key ) #
参数:

– str

返回类型:

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 )
参数:

– int

返回类型:

QCborValue

从映射中删除键 key 及其对应值,如果找到,则返回值。如果映射不包含此类键,则此函数不做任何事情。

如果映射中存在多个等于 key 的键,则该函数将删除哪个是不确定的。 QCborMap 不允许插入重复的键,但可以通过解码包含它们的 CBOR 流创建这样的映射。通常不允许这样操作,并且重复键通常表示发送者存在问题的指示。

另请参阅

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

take ( key )
参数:

QCborValue

返回类型:

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 )
参数:

QLatin1String

返回类型:

QCborValue

toCborValue()#
返回类型:

QCborValue

显式构造一个表示此映射的 QCborValue 对象。此函数通常不是必要的,因为 QCborValueQCborMap 提供了构造函数,因此转换是隐式的。

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

另请参阅

QCborValue(const QCborMap &)

toJsonObject()#
返回类型:

QJsonObject

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

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

将映射键转换为字符串#

与 CBOR 不同,JSON 对象被定义为具有字符串键,因此将 QCborMap 转换为 QJsonObject 将意味着对键值进行“字符串化”步骤。转换将使用上面提到的特殊处理标签和扩展类型,并且还将按照以下方式将其他数据类型转换

类型

转换

布尔

“true”和“false”

“null”

未定义

“undefined”

整数

数字的十进制字符串形式

双精度浮点数

数字的十进制字符串形式

字节数组

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

数组

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

映射

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

标签和扩展类型

标签编号被丢弃,标记值被转换为字符串

toVariantHash()#
返回类型:

具有 .QString 类型键和 QVariant 类型值的字典。

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

与 CBOR 不同,QVariantMap 使用字符串键,因此将 QCborMap 转换为 QVariantMap 将意味着对键值进行“字符串化”步骤。有关详细信息,请参阅 toJsonObject()

此外,转换为 QVariant 不是完全没有损耗。有关更多信息,请参阅 toVariant() 的文档。

toVariantMap()#
返回类型:

具有 .QString 类型键和 QVariant 类型值的字典。

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

与 CBOR 不同,QVariantMap 使用字符串键,因此将 QCborMap 转换为 QVariantMap 将意味着对键值进行“字符串化”步骤。有关详细信息,请参阅 toJsonObject()

此外,转换为 QVariant 不是完全没有损耗。有关更多信息,请参阅 toVariant() 的文档。

value(key)#
参数:

QLatin1String

返回类型:

QCborValue

value(key)
参数:

QCborValue

返回类型:

QCborValue

返回与键 key 对应的 QCborValue 元素,如果存在的话。

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

如果映射包含多个与 key 等键的键,则函数将返回哪个键是不确定的。 QCborMap 不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。

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

另请参阅

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

value(key)
参数:

– str

返回类型:

QCborValue

这是一个重载函数。

返回与键 key 对应的 QCborValue 元素,如果存在的话。

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

如果映射包含多个与 key 等键的键,则函数将返回哪个键是不确定的。 QCborMap 不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。

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

另请参阅

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

value(key)
参数:

– int

返回类型:

QCborValue

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

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

如果映射中包含多个与 key 相等的键,则无法定义由函数返回的引用是哪一个。 QCborMap 不允许插入重复键,但可以通过对包含它们的 CBOR 流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常意味着发送方存在问题。

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

另请参阅

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