PySide6.QtCore.QJsonValue¶
- class QJsonValue¶
QJsonValue
类封装了 JSON 中的一个值。更多…概要¶
方法¶
def
__init__()
def
isArray()
def
isBool()
def
isDouble()
def
isNull()
def
isObject()
def
isString()
def
isUndefined()
def
__ne__()
def
__eq__()
def
operator[]()
def
swap()
def
toArray()
def
toBool()
def
toDouble()
def
toInt()
def
toInteger()
def
toObject()
def
toString()
def
toVariant()
def
type()
静态函数¶
def
fromVariant()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
JSON 中的值可以是 6 种基本类型之一:
JSON 是一种用于存储结构化数据的格式。它有6种基本数据类型:
一个值可以代表上述任何数据类型。此外,
QJsonValue
有一个特殊的标志来表示未定义的值。这可以通过isUndefined()
来查询。值的类型可以通过
type()
或访问器如isBool()
、isString()
等来查询。同样,可以使用toBool()
、toString()
等方法将值转换为其中存储的类型。值在内部是严格类型的,与
QVariant
相反,不会尝试进行任何隐式类型转换。这意味着转换为未存储在值中的类型将返回默认构造的返回值。QJsonValueRef¶
QJsonValueRef
是QJsonArray
和QJsonObject
的辅助类。当你获取一个类型为QJsonValueRef
的对象时,你可以像使用对QJsonValue
的引用一样使用它。如果你对它进行赋值,赋值将应用于你获取引用的QJsonArray
或QJsonObject
中的元素。以下方法返回
QJsonValueRef
:QJsonArray
::operator[](qsizetype i)QJsonObject
::operator[](constQString
& key) const
另请参阅
JSON Support in Qt 保存和加载游戏
- class Type¶
此枚举描述了JSON值的类型。
常量
描述
QJsonValue.Null
一个空值
QJsonValue.Bool
一个布尔值。使用
toBool()
转换为布尔类型。QJsonValue.Double
一个数值。使用
toDouble()
转换为双精度浮点数,或使用toInteger()
转换为 qint64。QJsonValue.String
一个字符串。使用
toString()
转换为QString
。QJsonValue.Array
一个数组。使用
toArray()
转换为QJsonArray
。QJsonValue.Object
一个对象。使用
toObject()
转换为QJsonObject
。QJsonValue.Undefined
该值未定义。这通常作为错误条件返回,当尝试读取数组中的越界值或对象中不存在的键时。
创建一个类型为
type
的QJsonValue
。默认是创建一个空值。
- __init__(s)
- Parameters:
s –
QLatin1String
- __init__(b)
- Parameters:
b – 布尔值
创建一个类型为 Bool 的值,其值为
b
。- __init__(a)
- Parameters:
a –
QJsonArray
创建一个类型为Array的值,其值为
a
。- __init__(o)
- Parameters:
o –
QJsonObject
创建一个类型为Object的值,其值为
o
。- __init__(other)
- Parameters:
其他 –
QJsonValue
创建
other
的副本。- __init__(s)
- Parameters:
s – 字符串
创建一个类型为String的值,其值为
s
。- __init__(s)
- Parameters:
s – 字符串
创建一个类型为String的值,其值为
s
,假设输入采用UTF-8编码。您可以通过在编译应用程序时定义
QT_NO_CAST_FROM_ASCII
来禁用此构造函数。- __init__(n)
- Parameters:
n – 浮点数
创建一个类型为Double的值,其值为
v
。- __init__(n)
- Parameters:
n – 整数
这是一个重载函数。
创建一个类型为Double的值,其值为
v
。- __init__(v)
- Parameters:
v – 整数
这是一个重载函数。
创建一个类型为Double的值,其值为
v
。注意:IEEE 754双精度数据的整数限制是2^53(-9007199254740992到+9007199254740992)。如果你传入超出此范围的值,预计会发生精度损失。- static fromVariant(variant)¶
- Parameters:
variant – 对象
- Return type:
将
variant
转换为QJsonValue
并返回。转换将按照以下方式转换
QVariant
类型:源类型
目标类型
String
. 转换将使用toString()
并带有标志FullyEncoded
,以确保在解析URL时的最大兼容性String
。自 Qt 5.11 起,生成的字符串将不包含大括号无论
toJsonValue()
返回哪种类型。Array
. 有关转换限制,请参见toJsonValue()
。QJsonValue::Map。有关转换限制和映射键的“字符串化”,请参见
toJsonValue()
。信息丢失和其他类型¶
QVariant
可以携带比 JSON 可表示的更多信息。如果QVariant
不是上述类型之一,转换不保证,并且可能会在 Qt 的未来版本中更改,就像 UUID 那样。代码应尽量避免使用上述列出的类型以外的任何其他类型。如果
isNull()
返回 true,则返回或插入到列表或对象中的是一个空的QJsonValue
,无论QVariant
携带的类型是什么。请注意,Qt 6.0 中影响isNull()
的行为变化也会影响此函数。一个浮点值,如果是无穷大或NaN,将被转换为null JSON值。自Qt 6.0起,
QJsonValue
可以无损存储任何64位有符号整数的全精度,但在之前的版本中,超出±2^53范围的值可能会丢失精度。大于或等于2^63的无符号64位值可能会丢失精度或别名到负值,因此应避免使用ULongLong
。对于上面未列出的其他类型,将尝试转换为字符串,通常但不总是通过调用
toString()
。如果转换失败,该值将被替换为null JSON值。请注意,toString()
对于大多数类型也是有损的。例如,如果传递的QVariant
表示原始字节数组数据,建议预先将其编码为Base64(或其他无损编码),否则将使用fromUtf8()
进行有损转换。请注意,通过
toString()
进行的转换可能会随时更改。未来QVariant
和QJsonValue
可能会扩展以支持更多类型,这将导致此函数执行转换的方式发生变化。另请参阅
- isArray()¶
- Return type:
布尔
如果值包含数组,则返回
true
。另请参阅
- isBool()¶
- Return type:
布尔
如果值包含布尔值,则返回
true
。另请参阅
- isDouble()¶
- Return type:
布尔
如果值包含双精度数,则返回
true
。另请参阅
- isNull()¶
- Return type:
布尔
如果值为空,则返回
true
。- isObject()¶
- Return type:
布尔
如果值包含对象,则返回
true
。另请参阅
- isString()¶
- Return type:
布尔
如果值包含字符串,则返回
true
。另请参阅
- isUndefined()¶
- Return type:
布尔
如果值为未定义,则返回
true
。这种情况可能发生在某些错误情况下,例如访问QJsonObject
中不存在的键。- __ne__(rhs)¶
- Parameters:
rhs –
QJsonArray
- Return type:
布尔
- __ne__(lhs)
- Parameters:
lhs –
QJsonObject
- Return type:
布尔
- __ne__(rhs)
- Parameters:
rhs –
QJsonObject
- Return type:
布尔
- __ne__(rhs)
- Parameters:
rhs –
QJsonValue
- Return type:
布尔
如果
lhs
值不等于rhs
值,则返回true
,否则返回false
。- __eq__(rhs)¶
- Parameters:
rhs –
QJsonArray
- Return type:
布尔
- __eq__(lhs)
- Parameters:
lhs –
QJsonObject
- Return type:
布尔
- __eq__(rhs)
- Parameters:
rhs –
QJsonObject
- Return type:
布尔
- __eq__(rhs)
- Parameters:
rhs –
QJsonValue
- Return type:
布尔
如果
lhs
值等于rhs
值,则返回true
,否则返回false
。- operator(key)¶
- Parameters:
key –
QLatin1String
- Return type:
- operator(key)
- Parameters:
key – str
- Return type:
这是一个重载函数。
- operator(key)
- Parameters:
key – str
- Return type:
返回一个
QJsonValue
,表示键key
对应的值。等同于调用
toObject()
.value(key)。如果键不存在,或者
isObject()
为假,则返回的QJsonValue
为Undefined
。另请参阅
QJsonValue
isUndefined()
QJsonObject
- operator(i)
- Parameters:
i – 整数
- Return type:
返回一个
QJsonValue
,表示索引i
的值。相当于调用
toArray()
.at(i)。返回的
QJsonValue
是Undefined
,如果i
超出范围,或者如果isArray()
为 false。- swap(other)¶
- Parameters:
其他 –
QJsonValue
将值
other
与此交换。此操作非常快速且永远不会失败。- toArray()¶
- Return type:
这是一个重载函数。
将值转换为数组并返回。
如果
type()
不是 Array,将返回一个QJsonArray()
。- toArray(defaultValue)
- Parameters:
defaultValue –
QJsonArray
- Return type:
将值转换为数组并返回它。
如果
type()
不是数组,将返回defaultValue
。- toBool([defaultValue=false])¶
- Parameters:
defaultValue – 布尔值
- Return type:
布尔
将值转换为布尔值并返回。
如果
type()
不是布尔类型,将返回defaultValue
。- toDouble([defaultValue=0])¶
- Parameters:
defaultValue – 浮点数
- Return type:
浮点数
将值转换为双精度并返回它。
如果
type()
不是 Double 类型,将返回defaultValue
。- toInt([defaultValue=0])¶
- Parameters:
defaultValue – int
- Return type:
整数
将值转换为int并返回。
如果
type()
不是 Double 或者值不是整数,将返回defaultValue
。- toInteger([defaultValue=0])¶
- Parameters:
defaultValue – int
- Return type:
整数
将值转换为整数并返回。
如果
type()
不是 Double 或者该值不能表示为 qint64 的整数,将返回defaultValue
。- toObject()¶
- Return type:
QJsonObject
这是一个重载函数。
将值转换为对象并返回它。
如果
type()
不是 Object,将返回QJsonObject()
。- toObject(defaultValue)
- Parameters:
defaultValue –
QJsonObject
- Return type:
QJsonObject
将值转换为对象并返回它。
如果
type()
不是 Object,将返回defaultValue
。- toString()¶
- Return type:
字符串
将值转换为
QString
并返回。如果
type()
不是字符串,将返回一个空的QString
。另请参阅
isNull()
- toString(defaultValue)
- Parameters:
defaultValue – str
- Return type:
字符串
将值转换为
QString
并返回。如果
type()
不是字符串,将返回defaultValue
。- toVariant()¶
- Return type:
对象
将值转换为
QVariant()
。QJsonValue
类型将按以下方式转换:空值
另请参阅
返回值的类型。
另请参阅