PySide6.QtCore.QCborMap¶
- class QCborMap¶
QCborMap
类用于保存可在CBOR中表示的关联容器。更多…概要¶
方法¶
def
__init__()
def
clear()
def
compare()
def
contains()
def
empty()
def
isEmpty()
def
keys()
def
__ne__()
def
__lt__()
def
__le__()
def
__eq__()
def
__gt__()
def
__ge__()
def
operator[]()
def
remove()
def
size()
def
swap()
def
take()
def
toCborValue()
def
toJsonObject()
def
toVariantHash()
def
toVariantMap()
def
value()
静态函数¶
def
fromJsonObject()
def
fromVariantMap()
注意
本文档可能包含从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
也可以与 QVariantMap 和QJsonObject
相互转换。然而,在执行转换时,任何非字符串键将使用单向方法进行字符串化,转换回QCborMap
时将无法还原。另请参阅
QCborArray
QCborValue
QJsonDocument
QVariantMap 解析和显示CBOR数据 序列化转换器 保存和加载游戏- __init__()¶
构造一个空的CBOR映射对象。
另请参阅
- __init__(other)
- Parameters:
其他 –
QCborMap
创建一个
QCborMap
对象,它是other
的副本。- clear()¶
清空此映射。
另请参阅
比较此映射和
other
,依次比较每个元素,并返回一个整数,指示此映射是否应排序在other
之前(如果结果为负)或之后(如果结果为正)。如果此函数返回0,则两个映射相等并包含相同的元素。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关CBOR排序顺序的更多信息,请参见
compare()
。- contains(key)¶
- Parameters:
key –
QLatin1String
- Return type:
布尔
- contains(key)
- Parameters:
key –
QCborValue
- 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。将
obj
对象中找到的所有JSON项使用QCborValue::fromJson()转换为CBOR,并返回由这些元素组成的映射。这种转换是无损的,因为CBOR类型系统是JSON的超集。此外,此函数返回的映射可以通过使用
toJsonObject()
转换回原始的obj
。- static fromVariantHash(hash)¶
- Parameters:
hash – 字典,键类型为 .QString,值类型为 QVariant。
- Return type:
将
hash
中的所有项目使用fromVariant()
转换为CBOR,并返回由这些元素组成的映射。从
QVariant
的转换并非完全无损。更多信息请参阅fromVariant()
中的文档。将
map
中的所有项目使用fromVariant()
转换为CBOR,并返回由这些元素组成的映射。从
QVariant
的转换并非完全无损。更多信息请参阅fromVariant()
中的文档。- isEmpty()¶
- Return type:
布尔
如果此映射为空(即
size()
为0),则返回true。- keys()¶
- Return type:
QCborValue的列表
返回此映射中所有键的列表。
另请参阅
keys()
keys()
比较
lhs
和rhs
映射,依次比较每个元素,如果两个映射包含任何不同的元素或元素顺序不同,则返回 true,否则返回 false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关Qt中CBOR相等的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator
- __ne__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
比较
lhs
和rhs
映射,依次比较每个元素,如果lhs
映射应该在rhs
之前排序,则返回 true,否则返回 false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关CBOR排序顺序的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator!=()
- __lt__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
比较
lhs
和rhs
映射,依次比较每个元素,如果lhs
映射应该在rhs
之前排序,或者如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关CBOR排序顺序的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator!=()
- __le__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
比较
lhs
和rhs
映射,依次比较每个元素,如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关Qt中CBOR相等的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator!=()
operator
- __eq__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
比较
lhs
和rhs
映射,依次比较每个元素,如果lhs
映射应在rhs
之后排序,则返回true,否则返回false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关CBOR排序顺序的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator!=()
- __gt__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
比较
lhs
和rhs
映射,依次比较每个元素,如果lhs
映射应在rhs
之后排序,或者如果两个映射包含相同顺序的相同元素,则返回 true,否则返回 false。请注意,CBOR映射是无序的,这意味着包含完全相同但顺序不同的两个映射仍然会比较不同。为了避免这种情况,建议以可预测的顺序将元素插入映射中,例如按升序键值。实际上,规范CBOR表示需要键按排序顺序排列的映射。
有关CBOR排序顺序的更多信息,请参见
compare()
。另请参阅
compare()
operator==()
operator==()
operator==()
operator!=()
- __ge__(rhs)
- Parameters:
rhs –
QCborValue
- Return type:
布尔
- operator(key)¶
- Parameters:
key –
QLatin1String
- Return type:
- operator(key)
- Parameters:
key –
QCborValue
- Return type:
返回此映射中与键
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:
这是一个重载函数。
返回此映射中与键
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:
返回此映射中与键
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)
- remove(key)¶
- Parameters:
key –
QLatin1String
- remove(key)
- Parameters:
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)
- Parameters:
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)
- Parameters:
key – int
如果找到,从映射中移除键
key
及其对应的值。如果映射中不包含此键,此函数不执行任何操作。如果映射包含多个等于
key
的键,则此函数将移除哪一个键是未定义的。QCborMap
不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。remove(
QLatin1StringView
), remove(constQString
&), remove(constQCborValue
&)另请参阅
value(qint64)
operator[](qint64)
find(qint64)
contains(qint64)
- size()¶
- Return type:
整数
返回此映射中的元素数量。
另请参阅
交换此映射和
other
的内容。- take(key)¶
- Parameters:
key –
QLatin1String
- Return type:
- take(key)
- Parameters:
key –
QCborValue
- Return type:
从映射中移除键
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:
从映射中移除键
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:
从映射中移除键
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
有一个用于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:
key –
QLatin1String
- Return type:
- value(key)
- Parameters:
key –
QCborValue
- Return type:
返回此映射中与键
key
对应的QCborValue
元素(如果存在)。如果映射中不包含键
key
,此函数将返回一个包含未定义值的QCborValue
。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。如果映射包含多个等于
key
的键,则此函数返回哪个键是未定义的。QCborMap
不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。值(qint64), 值(
QLatin1StringView
), 值(constQString
&)另请参阅
operator[](const QCborValue &)
find(const QCborValue &)
constFind(const QCborValue &)
remove(const QCborValue &)
contains(const QCborValue &)
- value(key)
- Parameters:
key – str
- Return type:
这是一个重载函数。
返回此映射中与键
key
对应的QCborValue
元素(如果存在)。如果映射中不包含键
key
,此函数将返回一个包含未定义值的QCborValue
。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。如果映射包含多个等于
key
的键,则此函数返回哪个键是未定义的。QCborMap
不允许插入重复的键,但可以通过解码包含重复键的CBOR流来创建这样的映射。通常不允许重复键,并且存在重复键通常表示发送方存在问题。值(qint64), 值(
QLatin1StringView
), 值(constQCborValue
&)另请参阅
operator[](const QString &)
find(const QString &)
constFind(const QString &)
remove(const QString &)
contains(const QString &)
- value(key)
- Parameters:
key – int
- Return type:
返回此映射中与键
key
对应的QCborValue
元素(如果存在)。CBOR建议使用整数键,因为它们占用更少的空间并且编码和解码更简单。如果映射中不包含键
key
,此函数将返回一个包含未定义值的QCborValue
。因此,无法通过此函数区分键不存在的情况和键映射到未定义值的情况。如果映射包含多个等于
key
的键,函数返回将引用哪一个键是未定义的。QCborMap
不允许插入重复的键,但通过解码包含重复键的CBOR流可以创建这样的映射。通常不允许重复键,并且存在重复键通常是发送方存在问题的迹象。值(
QLatin1StringView
), 值(constQString
&), 值(constQCborValue
&)另请参阅
operator[](qint64)
find(qint64)
constFind(qint64)
remove(qint64)
contains(qint64)