PySide6.QtCore.QCborValue¶
- class QCborValue¶
QCborValue类封装了 CBOR 中的一个值。更多…概要¶
方法¶
def
__init__()def
compare()def
isArray()def
isBool()def
isByteArray()def
isContainer()def
isDateTime()def
isDouble()def
isFalse()def
isInteger()def
isInvalid()def
isMap()def
isNull()def
isSimpleType()def
isString()def
isTag()def
isTrue()def
isUndefined()def
isUrl()def
isUuid()def
__ne__()def
__lt__()def
__le__()def
__eq__()def
__gt__()def
__ge__()def
operator[]()def
swap()def
tag()def
taggedValue()def
toArray()def
toBool()def
toByteArray()def
toCbor()def
toDateTime()def
toDouble()def
toInteger()def
toJsonValue()def
toMap()def
toSimpleType()def
toString()def
toUrl()def
toUuid()def
toVariant()def
type()
静态函数¶
def
fromCbor()def
fromJsonValue()def
fromVariant()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
该类可用于保存CBOR中可用的多种类型之一。CBOR是简洁二进制对象表示法,是一种非常紧凑的二进制数据编码形式,是JSON的超集。它由IETF受限RESTful环境(CoRE)工作组创建,已在许多新的RFC中使用。它旨在与CoAP协议一起使用。
CBOR 有三组内置类型:
基本类型:整数、浮点数(双精度)、布尔值、空值等。
类似字符串的类型:字符串和字节数组
容器:数组和映射
此外,CBOR通过将“标签”与上述类型之一关联来支持类型扩展性,以传达更多信息。例如,UUID由标签和包含UUID内容的16字节的字节数组表示。
QCborValue支持直接使用Qt类(如QUuid)创建和解码这些扩展类型。有关完整列表,请参见
Type。可以使用type()或其中一个“isXxxx”函数查询QCborValue的类型。扩展类型和标记值¶
标记值是一个普通的
QCborValue,它与一个数字配对,该数字是其标记。有关API中的标记以及完整的官方列表,请参阅QCborKnownTags。这种组合形成了扩展类型。QCborValue在API中支持某些扩展类型,例如URL(使用QUrl)和UUID(使用QUuid)。API中不支持的其它扩展类型由QCborValue的Tag类型表示。标签可以通过tag()检索,标记的值可以使用taggedValue()获取。为了支持未来的兼容性,包含扩展Qt类型的QCborValues与相同内容的标签类型比较相等。换句话说,以下表达式为真:
QCborValue(uuid) == QCborValue(QCborKnownTags.Uuid, uuid.toRfc4122())
未定义和空值¶
QCborValue可以包含一个“null”值,该值不属于任何特定类型。它类似于C++中的std::nullptr_t类型,其唯一可能的值是None。QCborValue有一个接受此类类型的构造函数,并创建一个空的QCborValue。空值用于表示可选值不存在。在这方面,它类似于C++标准库类型
std::optional当它未启用时。与C++类型不同,CBOR空值只是“Null”类型,无法确定它替换的具体类型。QCborValue也可以是未定义类型,表示“未定义”的值。实际上,这是QCborValue默认构造函数创建的内容。未定义的值与空值不同。虽然空值用于表示未提供的可选值,但未定义通常用于表示无法提供预期值,通常是由于错误或无法满足的前提条件。
这些值是完全有效的,并且可能出现在CBOR流中,与JSON内容和
QJsonValue的未定义位不同。但像QJsonValue的Undefined一样,它是由CBOR容器的value()或只读操作符[]返回的,用于无效查找(对于QCborArray,索引超出范围,或对于QCborMap,未找到键)。无法将这种情况与Undefined的值区分开来,因此如果需要,请检查QCborArray的大小并使用QCborMap的迭代器API。简单类型¶
CBOR支持额外的简单类型,这些类型像Null和Undefined一样,不携带其他值。它们被称为“简单类型”或“简单值”。CBOR将布尔值编码为两种不同的类型(一种用于
true,另一种用于false),但QCborValue为它们提供了一个方便的API。目前没有其他定义的CBOR简单类型。
QCborValue通过它们的数字支持它们,使用像isSimpleType()和toSimpleType()这样的API,以便在Qt API更新之前与未来规范兼容。在此类规范之前不鼓励使用它们,因为其他CBOR实现可能不完全支持它们。CBOR支持¶
QCborValue支持创建规范化和严格流所需的所有CBOR功能。它实现了RFC 7049中规定的几乎所有功能。下表列出了
QCborValue支持的CBOR功能。功能
支持
无符号数字
是 (
qint64范围)负数
是 (
qint64范围)字节字符串
是
文本字符串
是
分块字符串
见下文
标签
是(任意)
布尔值
是
空值
是
未定义
是
任意简单值
是
半精度浮点数(16位)
是
单精度浮点数(32位)
是
双精度浮点数(64位)
是
无穷大和NaN浮点数
是
定长数组和映射
是
不定长度数组和映射
是
除了字符串和整数之外的映射键类型
是(任意)
QCborValue中的整数限制在qint64类型的范围内。即从 -9,223,372,036,854,775,808 (-2 63) 到 9,223,372,036,854,775,807 (2 63 - 1)。CBOR 本身可以表示超出此范围的整数值,但QCborValue不支持。当使用fromCbor()解码包含这些值的流时,QCborValue会自动转换为Double,但这可能会丢失最多 11 位的精度。fromCbor()能够解码分块字符串,但总是会将分块合并成一个单一的QCborValue。因此,在使用toCbor()时,它总是写入非分块字符串(这也是规范格式所要求的)。QCborValue将始终将CBOR流中的半精度和单精度浮点值转换为双精度。toCbor()函数可以接受一个参数,指示是否重新创建它们。QCborValueRef¶
QCborValueRef 是
QCborArray和QCborMap的辅助类。它是你在使用这些类中的可变API时得到的类型。与QCborValue不同,可以给这个类分配新值。当这样做时,它引用的数组或映射将用新值进行修改。在其他所有方面,它的API与QCborValue相同。{解析和显示CBOR数据}
另请参阅
QCborArrayQCborMapQCborStreamReaderQCborStreamWriterQJsonValueQJsonDocument序列化转换器 保存和加载游戏- class EncodingOption¶
(继承自
enum.Flag) 此枚举用于toCbor()的选项参数中,用于修改编码器的行为。常量
描述
QCborValue.NoTransformation
(默认)不执行任何转换。
QCborValue.UseFloat
告诉编码器尽可能使用IEEE 754单精度浮点数(即
float)。QCborValue.UseFloat16
告诉编码器尽可能使用IEEE 754半精度浮点数(即
qfloat16)。隐含UseFloat。QCborValue.UseIntegers
告诉编码器在
Double类型的值包含整数时使用整数。使用
UseFloat16是必需的,以便以规范格式编码流,但在其他情况下并不必要。另请参阅
- class DiagnosticNotationOption¶
(继承自
enum.Flag) 此枚举用于toDiagnosticNotation()的选项参数中,以修改输出格式。常量
描述
QCborValue.Compact
不使用任何换行符,生成紧凑的表示形式。
QCborValue.LineWrapped
使用换行符,每行一个
QCborValue。QCborValue.ExtendedFormat
使用一些不同的选项来表示值,这些选项在RFC 7049中未找到。这些选项可能会发生变化。
目前,
ExtendedFormat将改变字节数组的表示方式。没有它时,它们总是以十六进制编码且没有空格。有了它,toCbor()将根据上下文使用带空格的十六进制、base64 或 base64url 编码。
- class Type¶
此枚举表示
QCborValue类型。它由type()函数返回。CBOR 内置类型有:
常量
描述
QCborValue.Integer
qint64: 一个整数值QCborValue.ByteArray
QByteArray: 一个字节数组(“字节字符串”)QCborValue.String
QString: 一个Unicode字符串(“文本字符串”)QCborValue.Array
QCborArray: QCborValues的数组QCborValue.Map
QCborMap: QCborValues的关联容器QCborValue.SimpleType
QCborSimpleType: 几种简单类型/值之一QCborValue.False
bool: 值为false的简单类型QCborValue.True
bool: 值为true的简单类型QCborValue.Null
std::nullptr_t: 空值的简单类型QCborValue.Undefined
(无类型) 未定义值的简单类型
QCborValue.Double
double: 双精度浮点数QCborValue.Invalid
不是一个有效的值,这通常表示CBOR解码错误
此外,
QCborValue可以表示扩展类型:常量
描述
QCborValue.Tag
一个未知或无法识别的扩展类型,由其标签(一个
QCborTag)和标记值(一个QCborValue)表示QCborValue.DateTime
QDateTime: 日期和时间戳QCborValue.Url
QUrl: 一个URL或URIQCborValue.RegularExpression
QRegularExpression: 正则表达式的模式QCborValue.Uuid
QUuid: 一个UUID另请参阅
- __init__()¶
创建一个
QCborValue类型的Undefined。CBOR未定义值用于指示缺失的信息,通常是由于之前的操作未按预期完成的结果。它们也被
QCborArray和QCborMapAPI用来指示未找到搜索的项目。未定义的值由
Undefined simple type表示。因此,具有未定义值的QCborValues也会对isSimpleType()和isSimpleType(QCborSimpleType::Undefined)返回true。未定义的值与空值不同。
QCborValue具有未定义值的对象也与无效的QCborValue对象不同。API 不会创建无效的 QCborValues,但它们可能由于解析错误而存在。- __init__(st)
- Parameters:
st –
QCborSimpleType
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
创建一个
QCborValue的简单类型st。该类型稍后可以使用toSimpleType()以及isSimpleType(st)来检索。CBOR简单类型是没有关联值的类型,就像C++的
std::nullptr_t类型,其唯一可能的值是None。如果
st是QCborSimpleType::Null,生成的QCborValue将是Null类型,同样适用于QCborSimpleType::Undefined。如果st是QCborSimpleType::False或QCborSimpleType::True,创建的QCborValue将是一个布尔值,分别包含 false 或 true 的值。此函数可用于API中未定义的简单类型。例如,要创建一个具有简单类型12的
QCborValue,可以编写:value = QCborValue(QCborSimpleType(12))
在简单类型的规范发布之前,不应使用它们,因为其他实现可能无法正确支持它们。简单类型值24到31是保留的,不得使用。
isSimpleType(),isNull(),isUndefined(),isTrue(),isFalse()- __init__(t_)
- Parameters:
t –
类型
创建一个类型为
t_的QCborValue。与此类型关联的值(如果有)将默认构造。另请参阅
- __init__(s)
- Parameters:
s –
QLatin1String
- __init__(s)
- Parameters:
s – 字符串
创建一个带有字符串值
s的QCborValue。该值稍后可以使用toString()来获取。- __init__(b_)
- Parameters:
b – 布尔值
创建一个带有布尔值
b的QCborValue。该值稍后可以使用toBool()来获取。在内部,CBOR 布尔值由一对类型表示,一个表示 true,一个表示 false。因此,布尔值的 QCborValues 将返回 true 给
isSimpleType()和isSimpleType(QCborSimpleType::False)或isSimpleType(QCborSimpleType::True)中的一个。- __init__(ba)
- Parameters:
ba –
QByteArray
创建一个带有字节数组值
ba的QCborValue。稍后可以使用toByteArray()来检索该值。- __init__(a)
- Parameters:
a –
QCborArray
- __init__(m)
- Parameters:
m –
QCborMap
- __init__(other)
- Parameters:
其他 –
QCborValue
将
other的内容复制到此对象中。- __init__(dt)
- Parameters:
dt –
QDateTime
创建一个包含由
dt表示的值的日期/时间扩展类型的QCborValue对象。该值稍后可以使用toDateTime()检索。CBOR 日期/时间类型是使用标签的扩展类型:要么是标记为
DateTime的字符串(ISO 日期格式),要么是标记为UnixTime_t的数字(自 1970 年开始以来的秒数,UTC)。在解析 CBOR 流时,QCborValue会将UnixTime_t转换为基于字符串的类型。- __init__(rx)
- Parameters:
rx –
QRegularExpression
创建一个
QCborValue对象,该对象属于正则表达式模式扩展类型,并包含由rx表示的值。该值稍后可以使用toRegularExpression()来检索。CBOR正则表达式类型是一种扩展类型,由一个标记为
RegularExpression的字符串表示。请注意,CBOR正则表达式仅存储模式,因此QRegularExpression对象可能携带的任何标志将会丢失。- __init__(s)
- Parameters:
s – 字符串
创建一个带有字符串值
s的QCborValue。该值稍后可以使用toString()来获取。- __init__(url)
- Parameters:
url –
QUrl
创建一个包含由
url表示的值的URL扩展类型的QCborValue对象。该值稍后可以使用toUrl()来检索。CBOR URL类型是一种扩展类型,由一个标记为
Url的字符串表示。另请参阅
- __init__(uuid)
- Parameters:
uuid –
QUuid
创建一个包含由
uuid表示的值的QCborValue对象的UUID扩展类型。该值稍后可以使用toUuid()来检索。CBOR UUID 类型是一种扩展类型,由一个标记为
Uuid的字节数组表示。- __init__(s)
- Parameters:
s – 字符串
- __init__(v)
- Parameters:
v – 浮点数
创建一个带有浮点值
d的QCborValue。该值稍后可以使用toDouble()来获取。CBOR浮点数值与整数值是不同的。因此,包含整数的
QCborValue对象与包含浮点数的QCborValue对象在比较时会有所不同,即使对象中包含的值是等价的。- __init__(i)
- Parameters:
i – 整数
- __init__(i)
- Parameters:
i – 整数
创建一个带有整数值
i的QCborValue。该值稍后可以使用toInteger()来获取。CBOR整数值与浮点数值是不同的。因此,包含整数的
QCborValue对象与包含浮点数的QCborValue对象在比较时会有所不同,即使对象中包含的值是等价的。- __init__(u)
- Parameters:
u – 整数
- __init__(t_[, tv=QCborValue()])
- Parameters:
t –
QCborKnownTagstv –
QCborValue
这是一个重载函数。
创建一个
QCborValue,用于表示由标签值tag表示的扩展类型,并标记值taggedValue。稍后可以使用tag()检索标签,并使用taggedValue()检索标记值。- __init__(tag[, taggedValue=QCborValue()])
- Parameters:
标签 –
QCborTagtaggedValue –
QCborValue
- compare(other)¶
- Parameters:
其他 –
QCborValue- Return type:
整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
比较此值和
other,并返回一个整数,指示此值是否应在other之前(如果结果为负)或之后(如果结果为正)排序。如果此函数返回0,则两个值相等且内容相同。如果每个
QCborValue包含一个数组或映射,则比较会递归到它们包含的元素。扩展类型¶
QCborValue比较等于包含扩展类型的QCborValue,例如Url和Url及其等效的标记表示。因此,例如,以下表达式为真:QCborValue(QUrl("https://example.com")) == QCborValue(QCborKnownTags.Url, "https://example.com")
请注意,像
QUrl和QDateTime这样的Qt类型会对其参数进行规范化和其他修改。上面的表达式为真,仅仅是因为右侧的字符串是左侧QCborValue将采用的规范化值。例如,如果“https”部分在两边都是大写的,那么比较将会失败。有关QCborValue执行的规范化的信息,请查阅采用相关Qt类型的构造函数的文档。排序顺序¶
CBOR中的排序顺序在RFC 7049的第3.9节中定义,该节讨论了在遵循规范编码时映射中键的排序。根据规范,“排序是在键数据项的表示字节上执行的”,并列出以下结果:
“如果两个键的长度不同,较短的键排序在前;”
“如果两个键的长度相同,则按(字节顺序)字典序中值较小的键排序在前。”
这导致QCborValues的排序结果出人意料,该函数的结果与稍后通过比较包含元素得到的结果不同。例如,包含字符串“zzz”的
QCborValue在包含字符串“foobar”的QCborValue之前排序,即使作为QStrings或QByteArrays比较时,“zzz”在“foobar”之后排序(字典顺序)。规范没有明确指出对于不同类型的值应该采用什么排序顺序(它说排序不应该“关注主要类型的3/5位分割”)。
QCborValue假设类型也应该排序。Type枚举的数值按该顺序排列,除了扩展类型,它们比较时等同于它们的标记等价物。- static fromCbor(reader)¶
- Parameters:
reader –
QCborStreamReader- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
从
reader中找到的CBOR流中解码一个项目,并返回等效的表示。此函数是递归的:如果项目是映射或数组,它将解码该映射或数组中的所有项目,直到最外层的对象完成。此函数不需要在
QCborStreamReader的根元素上使用。例如,以下代码展示了如何从文件开头跳过CBOR签名标签:if reader.isTag() and reader.toTag() == QCborKnownTags.Signature: reader.next() contents = QCborValue.fromCbor(reader)
返回的值可能部分完成,即使解码失败,也可能与有效的
QCborValue无法区分。要确定是否存在错误,请检查lastError()是否指示错误条件。此函数在第一个错误后立即停止解码。- static fromCbor(ba[, error=None])
- Parameters:
ba –
QByteArray错误 –
QCborParserError
- Return type:
这是一个重载函数。
从字节数组
ba中找到的 CBOR 流中解码一个项目,并返回等效的表示形式。此函数是递归的:如果项目是映射或数组,它将解码该映射或数组中找到的所有项目,直到最外层的对象完成。此函数将错误状态(如果有)存储在
error指向的对象中,同时存储错误发生的偏移量。如果没有发生错误,它将在错误状态中存储NoError以及它消耗的字节数(即存储第一个未使用字节的偏移量)。使用这些信息可以解析可能存在于同一字节数组中的更多数据。返回的值可能部分完成,即使解码失败,也可能与有效的
QCborValue无法区分。要确定是否存在错误,请检查error中是否存储了错误。此函数在第一个错误后立即停止解码。- static fromCbor(data, len[, error=None])
- Parameters:
data – 字符串
len – int
错误 –
QCborParserError
- Return type:
- static fromCbor(data, len[, error=None])
- Parameters:
data –
quint8len – int
错误 –
QCborParserError
- Return type:
- static fromJsonValue(v)¶
- Parameters:
v –
QJsonValue- Return type:
将包含在
v中的JSON值转换为其对应的CBOR值并返回。从JSON转换为CBOR时不会丢失数据,因为CBOR类型集比JSON更丰富。此外,使用此函数转换为CBOR的值可以使用toJsonValue()转换回JSON,且不会丢失数据。下表列出了JSON类型到CBOR类型的映射:
JSON 类型
CBOR 类型
布尔
布尔
数字
整数(如果数字没有小数且在
qint64范围内)或双精度浮点数字符串
字符串
数组
数组
对象
地图
空值
空值
QJsonValue也可以是未定义的,表示之前的操作未能完成(例如,搜索对象中不存在的键)。未定义的值不是 JSON 类型,可能不会出现在 JSON 数组和对象中,但如果相应的QJsonValue是未定义的,此函数确实会返回QCborValue的未定义值。- static fromVariant(variant)¶
- Parameters:
variant – 对象
- Return type:
将
QVariantvariant转换为QCborValue并返回。QVariants 可能包含大量不同的元类型,其中许多在 CBOR 中没有相应的表示。这包括所有用户定义的元类型。在使用 CBOR 准备传输时,建议仔细编码每个值,以防止表示丢失。
下表列出了此函数将应用的转换:
Qt (C++) 类型
CBOR 类型
无效 (QVariant())
未定义
bool布尔
std::nullptr_t空
short,ushort,int,uint,qint64整数
quint64整数,如果超出qint64范围则为双精度浮点数
float,double双精度
简单类型
数组,使用 QCborArray::formJsonArray() 转换
数组或映射
QJsonObject使用
fromJsonObject()转换的Map使用
fromJsonValue()转换QString字符串
QStringList数组
映射
数组
映射
网址
Uuid
如果
isNull()返回 true,则无论QVariant携带的类型如何,都会返回或插入一个空的QCborValue到列表或对象中。请注意,Qt 6.0 中影响isNull()的行为变化也会影响此函数。对于上面未列出的其他类型,将尝试转换为字符串,通常但不总是通过调用
toString()。如果转换失败,该值将被替换为未定义的CBOR值。请注意,toString()对于大多数类型也是有损的。请注意,通过
toString()进行的转换可能会随时更改。未来可能会扩展QVariant和QCborValue以支持更多类型,这将导致此函数执行转换的方式发生变化。- isArray()¶
- Return type:
布尔
如果此
QCborValue是数组类型,则返回true。可以使用toArray()来获取数组值。- isBool()¶
- Return type:
布尔
如果这个
QCborValue是一个布尔值,则返回true。可以使用toBool()来获取该值。- isByteArray()¶
- Return type:
布尔
如果此
QCborValue是字节数组类型,则返回true。可以使用toByteArray()检索字节数组值。另请参阅
- isContainer()¶
- Return type:
布尔
如果
QCborValue是数组或映射,此便捷函数返回true。- isDateTime()¶
- Return type:
布尔
如果此
QCborValue是日期/时间类型,则返回true。可以使用toDateTime()来获取该值。日期/时间是使用DateTime标签的扩展类型。此外,当从CBOR流解码时,
QCborValue将解释值为UnixTime_t的标签,并将其转换为等效的日期/时间。另请参阅
- isDouble()¶
- Return type:
布尔
如果此
QCborValue是浮点类型,则返回true。可以使用toDouble()来获取该值。另请参阅
- isFalse()¶
- Return type:
布尔
如果此
QCborValue是一个值为false的布尔值,则返回true。此函数存在的原因是,在内部,CBOR布尔值被存储为两种独立的类型,一种为true,另一种为false。- isInteger()¶
- Return type:
布尔
如果此
QCborValue是整数类型,则返回true。可以使用toInteger()来检索整数值。另请参阅
- isInvalid()¶
- Return type:
布尔
如果此
QCborValue不是任何有效类型,则返回true。无效的QCborValues与具有未定义值的QCborValues不同,它们通常表示解码错误。另请参阅
- isMap()¶
- Return type:
布尔
如果此
QCborValue是映射类型,则返回true。可以使用toMap()来获取映射值。- isNull()¶
- Return type:
布尔
如果此
QCborValue为空类型,则返回true。CBOR空值用于表示未提供的可选值。它们与未定义的值不同,因为空值通常不是早期错误或问题的结果。
空值与未定义值以及无效的
QCborValue对象是不同的。API不会创建无效的QCborValues,但它们可能由于解析错误而存在。- isRegularExpression()¶
- Return type:
布尔
如果此
QCborValue包含正则表达式的模式,则返回true。可以使用toRegularExpression()检索该模式。- isSimpleType()¶
- Return type:
布尔
如果此
QCborValue是CBOR简单类型之一,则返回true。即使对于API中没有枚举的类型,也可以稍后使用type()检索类型本身。还可以使用isSimpleType(QCborSimpleType)重载进行检查。另请参阅
QCborSimpleTypeisSimpleType(QCborSimpleType)toSimpleType()- isSimpleType(st)
- Parameters:
st –
QCborSimpleType- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
如果此
QCborValue是简单类型且toSimpleType()将返回st,则返回true,否则返回false。此函数可用于检查任何CBOR简单类型,即使API中没有枚举的类型。例如,对于值为12的简单类型,您可以编写:value.isSimpleType(QCborSimpleType(12))
另请参阅
QCborValue(QCborSimpleType)isSimpleType()isFalse()isTrue()isNullisUndefined()toSimpleType()- isString()¶
- Return type:
布尔
如果此
QCborValue是字符串类型,则返回true。可以使用toString()来获取字符串值。另请参阅
- isTag()¶
- Return type:
布尔
如果此
QCborValue是标签类型,则返回true。可以使用tag()检索标签值,并使用taggedValue()检索带标签的值。此函数对于API识别的扩展类型也返回true。对于在Qt API更新以支持扩展类型之前直接处理扩展类型的代码,可以通过使用
taggedValue()重新创建标签+标记值对。- isTrue()¶
- Return type:
布尔
如果此
QCborValue是一个值为true的布尔值,则返回true。此函数存在的原因是,在内部,CBOR布尔值存储为两种不同的类型,一种用于false,一种用于true。- isUndefined()¶
- Return type:
布尔
如果此
QCborValue是未定义类型,则返回true。CBOR未定义值用于指示缺失的信息,通常是由于之前的操作未按预期完成的结果。它们也被
QCborArray和QCborMapAPI用来指示未找到搜索的项目。未定义的值与空值不同。
QCborValue具有未定义值的对象也与无效的QCborValue对象不同。API 不会创建无效的 QCborValues,但它们可能由于解析错误而存在。另请参阅
- isUrl()¶
- Return type:
布尔
如果此
QCborValue是URL类型,则返回true。可以使用toUrl()来获取URL值。- isUuid()¶
- Return type:
布尔
如果此
QCborValue包含UUID,则返回true。可以使用toUuid()来获取该值。- __ne__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __ne__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __ne__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果内容不同则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则对其中包含的元素进行递归比较。有关Qt中CBOR相等的更多信息,请参见
compare()。另请参阅
compare()operator==()operator==()operator==()operator- __lt__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __lt__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __lt__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果lhs应该在rhs之前排序,则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则对其中包含的元素进行递归比较。有关CBOR排序顺序的更多信息,请参见
compare()。另请参阅
compare()operator==()operator==()operator==()operator!=()- __le__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __le__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __le__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果lhs应该在rhs之前排序或等于rhs,则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则对其中包含的元素进行递归比较。有关CBOR排序顺序的更多信息,请参见
compare()。另请参阅
compare()operatoroperator==()operator==()operator!=()- __eq__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __eq__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __eq__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果它们包含相同的内容则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则对它们包含的元素进行递归比较。有关Qt中CBOR相等的更多信息,请参见
compare()。另请参阅
compare()operator==()operator!=()operator- __gt__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __gt__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __gt__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果lhs应该在rhs之后排序,则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则对其中包含的元素进行递归比较。有关CBOR排序顺序的更多信息,请参见
compare()。另请参阅
compare()operator>=()operator==()operator==()operator!=()- __ge__(rhs)¶
- Parameters:
rhs –
QCborArray- Return type:
布尔
- __ge__(rhs)
- Parameters:
rhs –
QCborMap- Return type:
布尔
- __ge__(rhs)
- Parameters:
rhs –
QCborValue- Return type:
布尔
比较
lhs和rhs,如果lhs应该在rhs之后排序或等于rhs,则返回 true,否则返回 false。如果每个QCborValue包含数组或映射,则比较会递归到它们包含的元素。有关CBOR排序顺序的更多信息,请参见
compare()。另请参阅
compare()operator>()operator==()operator==()operator!=()- operator(key)¶
- Parameters:
key –
QLatin1String- Return type:
- operator(key)
- Parameters:
key – str
- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果这个
QCborValue是一个QCborMap,则搜索其元素以查找键与key匹配的值。如果映射中没有与key匹配的键,或者如果这个QCborValue对象不是映射,则返回未定义的值。此函数等同于:
value.toMap().value(key)
另请参阅
operator[](qint64)operator[]value()find()- operator(key)
- Parameters:
key – int
- Return type:
这是一个重载函数。
如果这个
QCborValue是一个QCborMap,则搜索其键与key匹配的元素值。如果这是一个QCborArray,则返回索引为key的元素。如果数组或映射中没有匹配的值,或者如果这个QCborValue对象不是数组或映射,则返回未定义的值。- swap(other)¶
- Parameters:
其他 –
QCborValue
交换此
QCborValue对象和other的内容。返回此扩展的
QCborValue对象的标签,如果它是标签类型,否则返回defaultValue。CBOR通过将一个数字(标签)与存储的表示形式关联来表示扩展类型。此函数返回该数字。要检索表示形式,请使用
taggedValue()。- taggedValue([defaultValue=QCborValue()])¶
- Parameters:
defaultValue –
QCborValue- Return type:
返回此扩展
QCborValue对象的标记值,如果它是标记类型,否则返回defaultValue。CBOR通过将一个数字(标签)与存储的表示形式关联来表示扩展类型。此函数返回该表示形式。要检索标签,请使用
tag()。- toArray()¶
- Return type:
- toArray(defaultValue)
- Parameters:
defaultValue –
QCborArray- Return type:
- toBool([defaultValue=false])¶
- Parameters:
defaultValue – 布尔值
- Return type:
布尔
返回存储在此
QCborValue中的布尔值,如果它是布尔类型。否则,返回defaultValue。- toByteArray([defaultValue={}])¶
- Parameters:
defaultValue –
QByteArray- Return type:
返回存储在此
QCborValue中的字节数组值,如果它是字节数组类型。否则,返回defaultValue。请注意,此函数不执行从其他类型到
QByteArray的转换。- toCbor([opt=QCborValue.EncodingOption.NoTransformation])¶
- Parameters:
opt –
EncodingOption的组合- Return type:
将此
QCborValue对象编码为其CBOR表示形式,使用opt中指定的选项,并返回包含该表示形式的字节数组。此函数不会失败,除非此
QCborValue或任何包含的项目(如果这是映射或数组)无效。API通常不会生成无效类型,但可能是由于解码错误导致的。默认情况下,此函数不对
QCborValue中的值进行任何转换,将所有浮点数直接写为双精度(double)类型。如果指定了UseFloat选项,它将使用单精度(float)表示任何浮点值,前提是使用该表示不会导致精度损失。这包括无穷大和NaN值。同样,如果指定了
UseFloat16,此函数将尝试使用半精度(qfloat16)浮点数,如果转换为该类型不会导致精度损失。对于无穷大和NaN,这总是成立的。如果指定了
UseIntegers,它将为任何包含实际整数的浮点值使用整数。- toCbor(writer[, opt=QCborValue.EncodingOption.NoTransformation])
- Parameters:
writer –
QCborStreamWriteropt –
EncodingOption的组合
这是一个重载函数。
将此
QCborValue对象编码为其CBOR表示,使用opt中指定的选项,写入由writer指定的写入器。同一个写入器可以被多个QCborValue使用,例如,为了编码较大数组中的不同元素。此函数不会失败,除非此
QCborValue或任何包含的项目(如果这是映射或数组)无效。API通常不会生成无效类型,但可能是由于解码错误导致的。默认情况下,此函数不对
QCborValue中的值进行任何转换,将所有浮点数直接写为双精度(binary64)类型。如果指定了UseFloat选项,它将使用单精度(binary32)表示任何浮点值,前提是使用该表示不会导致精度损失。这包括无穷大和NaN值。同样,如果指定了
UseFloat16,此函数将尝试使用半精度(binary16)浮点数,如果转换到该精度不会导致精度损失。对于无穷大和NaN,这总是成立的。如果指定了
UseIntegers,它将为任何包含实际整数的浮点值使用整数。返回存储在此
QCborValue中的日期/时间值,如果它是日期/时间扩展类型。否则,返回defaultValue。请注意,此函数不执行从其他类型到
QDateTime的转换。- toDiagnosticNotation([opts=QCborValue.DiagnosticNotationOption.Compact])¶
- Parameters:
opts –
DiagnosticNotationOption的组合- Return type:
字符串
创建与此CBOR对象等效的诊断表示法并返回它。
opts参数控制表示法的方言。诊断表示法在调试时非常有用,可以帮助开发人员理解存储在QCborValue或CBOR流中的值。因此,尽管表示法是唯一的并且可以解析回内存格式或CBOR流,但Qt API不提供将诊断表示法解析回内存格式或CBOR流的支持。CBOR诊断符号由RFC 7049的第6节规定。它是CBOR流的文本表示,与JSON非常相似,但它支持JSON中没有的CBOR类型。由
ExtendedFormat标志启用的扩展格式目前在一些IETF草案中,其格式可能会发生变化。此函数生成与
toCbor()在没有提供任何转换选项时生成的流等效的表示。这也意味着,如果对象是使用fromCbor()创建的,此函数可能不会生成用于创建对象的流的表示,因为该函数可能已经应用了转换。有关流的无转换高保真表示,请参见cbordump示例。- toDouble([defaultValue=0])¶
- Parameters:
defaultValue – 浮点数
- Return type:
浮点数
返回存储在此
QCborValue中的浮点值,如果它是Double类型。如果它是Integer类型,此函数将返回转换为double的整数值。在任何其他情况下,它返回defaultValue。- toInteger([defaultValue=0])¶
- Parameters:
defaultValue – int
- Return type:
整数
返回存储在此
QCborValue中的整数值,如果它是整数类型。如果它是Double类型,此函数返回转换为整数的浮点值。在任何其他情况下,它返回defaultValue。- toJsonValue()¶
- Return type:
将此
QCborValue对象转换为JSON中的等效表示,并将其作为QJsonValue返回。请注意,CBOR 包含比 JSON 更丰富和更广泛的类型集,因此在此转换过程中可能会丢失一些信息。下表比较了 CBOR 类型与 JSON 类型,并指出是否可能丢失信息。
CBOR 类型
JSON 类型
注释
布尔
布尔
不可能丢失数据
Double
Number
无穷大和NaN将被转换为Null;其他值不会丢失数据
整数
数字
如果整数大于2 53或小于-2 53,转换时可能会丢失数据。
空值
空值
不可能丢失数据
未定义
空值
类型信息丢失
字符串
字符串
不可能丢失数据
字节数组
字符串
转换为无损编码,如Base64url,但字符串和字节数组之间的区别丢失
其他简单类型
字符串
类型信息丢失
数组
数组
转换适用于每个包含的值
Map
Object
键被转换为字符串;值根据此表转换
标签和扩展类型
特殊
标签号本身丢失,标记值转换为JSON
有关将CBOR映射键转换为字符串的信息,请参见
toJsonObject()。如果这个
QCborValue包含未定义的值,这个函数也会返回一个未定义的QJsonValue。请注意,JSON不支持未定义的值,未定义的QJsonValues是对规范的扩展。它们不能被保存在QJsonArray或QJsonObject中,但可以从函数返回以指示失败。对于所有其他意图和目的,它们与null相同。