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。另请参阅
QJsonValueisUndefined()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类型将按以下方式转换:空值
另请参阅
返回值的类型。
另请参阅