- 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
还可以转换为和从 QVariantMap 和QJsonObject
. 然而,在执行转换时,任何非字符串键都将使用单向方法转换为字符串,并且不能通过转换回QCborMap
而撤销转换。另请参阅
QCborArray
QCborValue
QJsonDocument
QVariantMap 解析和显示 CBOR 数据 序列化转换器 保存和加载游戏创建一个与
other
相同的QCborMap
对象。- __init__()
构建一个空的 CBOR 地图对象。
另请参阅
- clear()#
清空此映射。
另请参阅
比较此映射和
other
,顺序比较每个元素,并返回一个整数,指示在比较结果为负数时是否应在此映射之前(如果结果为正数)或在other
之前排序。如果此函数返回 0,则两个映射相等且包含相同元素。请注意,CBOR 映射是无序的,这意味着包含完全相同的对但顺序不同的两个映射也将进行比较。为了避免这种情况,建议按可预测的顺序将元素插入映射中,例如按升序列排序键值。实际上,用于规范 CBOR 表示的映射需要按键排序。
有关 CBOR 排序顺序的更多信息,请参见
compare()
。- 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。使用QCborValue::fromJson()将obj对象中找到的所有JSON项转换为CBOR,并返回由这些元素组成的映射。
这种转换是无损的,因为CBOR类型系统是JSON的超集。此外,此函数返回的映射可以通过使用
toJsonObject()
转换为原始的obj对象。使用
fromVariant()
将hash中的所有项转换为CBOR,并返回由这些元素组成的映射。从
QVariant
转换不是完全无损的。请参阅fromVariant()
中的文档以获取更多信息。将
map
中的所有元素转换为 CBOR,使用fromVariant()
并且返回由这些元素组成的映射。从
QVariant
转换不是完全无损的。请参阅fromVariant()
中的文档以获取更多信息。- isEmpty()#
- 返回类型:
bool
如果此映射为空(即
size()
为 0),则返回 true。- keys()#
- 返回类型:
: QCborValue 的列表
返回此映射中所有键的列表。
另请参阅
keys()
keys()
比较此映射和
other
,依次比较每个元素,如果两个映射包含不同的元素或顺序不同的元素,则返回 true,否则返回 false。请注意,CBOR 映射是无序的,这意味着包含完全相同的对但顺序不同的两个映射也将进行比较。为了避免这种情况,建议按可预测的顺序将元素插入映射中,例如按升序列排序键值。实际上,用于规范 CBOR 表示的映射需要按键排序。
有关 Qt 中 CBOR 等价的更多信息,请参阅,
compare()
.另请参阅
compare()
operator==()
operator==()
operator==()
operator
比较此映射和
other
,按顺序比较每个元素,如果此映射应排在此映射之前,则返回 true,否则返回 false。请注意,CBOR 映射是无序的,这意味着包含完全相同的对但顺序不同的两个映射也将进行比较。为了避免这种情况,建议按可预测的顺序将元素插入映射中,例如按升序列排序键值。实际上,用于规范 CBOR 表示的映射需要按键排序。
有关 CBOR 排序顺序的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator!=()
比较此映射和
other
,按顺序比较每个元素,如果两个映射具有相同的元素且顺序相同,则返回 true,否则返回 false。请注意,CBOR 映射是无序的,这意味着包含完全相同的对但顺序不同的两个映射也将进行比较。为了避免这种情况,建议按可预测的顺序将元素插入映射中,例如按升序列排序键值。实际上,用于规范 CBOR 表示的映射需要按键排序。
有关 Qt 中 CBOR 等价的更多信息,请参阅,
compare()
.另请参阅
compare()
operator==()
operator!=()
operator
- operator(key)#
- 参数:
键 – int
- 返回类型:
返回此映射中对应于键
key
的QCborValue
元素(如果存在的话)。CBOR 建议使用整数键,因为它们占用的空间更少,并且编码和解码更简单。如果映射不包含键
key
,则此函数返回一个包含未定义值的QCborValue
。因此,使用此函数无法区分键不存在和键映射到未定义值的情况。如果映射包含多个与
key
等键的键,则函数将返回哪个键是不确定的。QCborMap
不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。operator[](
QLatin1StringView
), operator[](constQString
&), operator[](const QCborOperator[] &)另请参阅
value(qint64)
find(qint64)
constFind(qint64)
remove(qint64)
contains(qint64)
- operator(key)
- 参数:
键 – str
- 返回类型:
这是一个重载函数。
返回与键
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
- 返回类型:
- operator(key)
- 参数:
键 –
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(constQString
&)另请参阅
value(const QCborValue &)
operator[](const QCborValue &)
find(const QCborValue &)
contains(const QCborValue &)
- remove(key)
- 参数:
键 – str
这是一个重载函数。
如果找到,则从映射中删除键
key
及其对应的值。如果映射中不存在此键,则此函数不执行任何操作。如果映射中存在多个等于
key
的键,则该函数将删除哪个是不确定的。QCborMap
不允许插入重复的键,但可以通过解码包含它们的 CBOR 流创建这样的映射。通常不允许这样操作,并且重复键通常表示发送者存在问题的指示。remove(qint64),remove(
QLatin1StringView
),remove(constQCborValue
&)另请参阅
value(const QString &)
operator[](const QString &)
find(const QString &)
contains(const QString &)
- remove(key)
- 参数:
键 – int
如果找到,则从映射中删除键
key
及其对应的值。如果映射中不存在此键,则此函数不执行任何操作。如果映射中存在多个等于
key
的键,则该函数将删除哪个是不确定的。QCborMap
不允许插入重复的键,但可以通过解码包含它们的 CBOR 流创建这样的映射。通常不允许这样操作,并且重复键通常表示发送者存在问题的指示。remove(
QLatin1StringView
),remove(constQString
&),remove(constQCborValue
&)另请参阅
value(qint64)
operator[](qint64)
find(qint64)
contains(qint64)
- size ( ) #
- 返回类型:
int
返回该映射中元素的数量。
另请参阅
交换本地图与
other
的内容。- take ( key ) #
- 参数:
键 – str
- 返回类型:
从映射中删除键
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
- 返回类型:
从映射中删除键
key
及其对应值,如果找到,则返回值。如果映射不包含此类键,则此函数不做任何事情。如果映射中存在多个等于
key
的键,则该函数将删除哪个是不确定的。QCborMap
不允许插入重复的键,但可以通过解码包含它们的 CBOR 流创建这样的映射。通常不允许这样操作,并且重复键通常表示发送者存在问题的指示。另请参阅
value(qint64)
operator[](qint64)
find(qint64)
contains(qint64)
take(QLatin1StringView)
take(const QString &)
take(const QCborValue &)
insert()
- take ( key )
- 参数:
键 –
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
- 返回类型:
- toCborValue()#
- 返回类型:
显式构造一个表示此映射的
QCborValue
对象。此函数通常不是必要的,因为QCborValue
为QCborMap
提供了构造函数,因此转换是隐式的。QCborMap
转换为QCborValue
允许它在任何可以使用QCborValue的地方使用,包括作为QCborMap
的键和映射类型,以及toCbor()
。另请参阅
QCborValue(const QCborMap &)
- toJsonObject()#
- 返回类型:
QJsonObject
将此映射中的每个
QCborValue
值递归地转换为 JSON,使用toJsonValue()
,并为所有非字符串键创建字符串键,然后返回由这些关联组成的相应的QJsonObject
。请注意,CBOR 包含比 JSON 更丰富和广泛的数据类型集,因此在转换过程中可能会丢失一些信息。有关应用了哪些转换的更多细节,请参阅
toJsonValue()
。将映射键转换为字符串#
与 CBOR 不同,JSON 对象被定义为具有字符串键,因此将
QCborMap
转换为QJsonObject
将意味着对键值进行“字符串化”步骤。转换将使用上面提到的特殊处理标签和扩展类型,并且还将按照以下方式将其他数据类型转换- 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
- 返回类型:
- value(key)
- 参数:
键 –
QCborValue
- 返回类型:
返回与键
key
对应的QCborValue
元素,如果存在的话。如果映射不包含键
key
,则此函数返回一个包含未定义值的QCborValue
。因此,使用此函数无法区分键不存在和键映射到未定义值的情况。如果映射包含多个与
key
等键的键,则函数将返回哪个键是不确定的。QCborMap
不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。value(qint64), value(
QLatin1StringView
), value(constQString
&)另请参阅
operator[](const QCborValue &)
find(const QCborValue &)
constFind(const QCborValue &)
remove(const QCborValue &)
contains(const QCborValue &)
- value(key)
- 参数:
键 – str
- 返回类型:
这是一个重载函数。
返回与键
key
对应的QCborValue
元素,如果存在的话。如果映射不包含键
key
,则此函数返回一个包含未定义值的QCborValue
。因此,使用此函数无法区分键不存在和键映射到未定义值的情况。如果映射包含多个与
key
等键的键,则函数将返回哪个键是不确定的。QCborMap
不允许插入重复键,但可以通过使用包含它们的 CBOR 流进行解码来创建此类映射。通常不允许使用重复键,并且具有重复键通常表示发送者存在问题。value(qint64), value(
QLatin1StringView
), value(constQCborValue
&)另请参阅
operator[](const QString &)
find(const QString &)
constFind(const QString &)
remove(const QString &)
contains(const QString &)
- value(key)
- 参数:
键 – int
- 返回类型:
返回此映射中对应于键
key
的QCborValue
元素(如果存在的话)。CBOR 建议使用整数键,因为它们占用的空间更少,并且编码和解码更简单。如果映射不包含键
key
,则此函数返回一个包含未定义值的QCborValue
。因此,使用此函数无法区分键不存在和键映射到未定义值的情况。如果映射中包含多个与
key
相等的键,则无法定义由函数返回的引用是哪一个。QCborMap
不允许插入重复键,但可以通过对包含它们的 CBOR 流进行解码来创建这样的映射。通常不允许这样做,并且具有重复键通常意味着发送方存在问题。value(
QLatin1StringView
), value(constQString
&), value(constQCborValue
&)另请参阅
operator[](qint64)
find(qint64)
constFind(qint64)
remove(qint64)
contains(qint64)