PySide6.QtCore.QJsonValue

class QJsonValue

QJsonValue 类封装了 JSON 中的一个值。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

JSON 中的值可以是 6 种基本类型之一:

JSON 是一种用于存储结构化数据的格式。它有6种基本数据类型:

一个值可以代表上述任何数据类型。此外,QJsonValue 有一个特殊的标志来表示未定义的值。这可以通过 isUndefined() 来查询。

值的类型可以通过type()或访问器如isBool()isString()等来查询。同样,可以使用toBool()toString()等方法将值转换为其中存储的类型。

值在内部是严格类型的,与QVariant相反,不会尝试进行任何隐式类型转换。这意味着转换为未存储在值中的类型将返回默认构造的返回值。

QJsonValueRef

QJsonValueRefQJsonArrayQJsonObject 的辅助类。当你获取一个类型为 QJsonValueRef 的对象时,你可以像使用对 QJsonValue 的引用一样使用它。如果你对它进行赋值,赋值将应用于你获取引用的 QJsonArrayQJsonObject 中的元素。

以下方法返回 QJsonValueRef

  • QJsonArray ::operator[](qsizetype i)

  • QJsonObject ::operator[](const QString & 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

该值未定义。这通常作为错误条件返回,当尝试读取数组中的越界值或对象中不存在的键时。

__init__([type=QJsonValue.Type.Null])
Parameters:

类型Type

创建一个类型为 typeQJsonValue

默认是创建一个空值。

__init__(s)
Parameters:

sQLatin1String

__init__(b)
Parameters:

b – 布尔值

创建一个类型为 Bool 的值,其值为 b

__init__(a)
Parameters:

aQJsonArray

创建一个类型为Array的值,其值为a

__init__(o)
Parameters:

oQJsonObject

创建一个类型为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:

QJsonValue

variant转换为QJsonValue并返回。

转换将按照以下方式转换 QVariant 类型:

源类型

目标类型

Null

Bool

Double

String

Array

Object

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()进行的转换可能会随时更改。未来QVariantQJsonValue可能会扩展以支持更多类型,这将导致此函数执行转换的方式发生变化。

另请参阅

toVariant() fromVariant()

isArray()
Return type:

布尔

如果值包含数组,则返回 true

另请参阅

toArray()

isBool()
Return type:

布尔

如果值包含布尔值,则返回 true

另请参阅

toBool()

isDouble()
Return type:

布尔

如果值包含双精度数,则返回 true

另请参阅

toDouble()

isNull()
Return type:

布尔

如果值为空,则返回 true

isObject()
Return type:

布尔

如果值包含对象,则返回 true

另请参阅

toObject()

isString()
Return type:

布尔

如果值包含字符串,则返回 true

另请参阅

toString()

isUndefined()
Return type:

布尔

如果值为未定义,则返回true。这种情况可能发生在某些错误情况下,例如访问QJsonObject中不存在的键。

__ne__(rhs)
Parameters:

rhsQJsonArray

Return type:

布尔

__ne__(lhs)
Parameters:

lhsQJsonObject

Return type:

布尔

__ne__(rhs)
Parameters:

rhsQJsonObject

Return type:

布尔

__ne__(rhs)
Parameters:

rhsQJsonValue

Return type:

布尔

如果 lhs 值不等于 rhs 值,则返回 true,否则返回 false

__eq__(rhs)
Parameters:

rhsQJsonArray

Return type:

布尔

__eq__(lhs)
Parameters:

lhsQJsonObject

Return type:

布尔

__eq__(rhs)
Parameters:

rhsQJsonObject

Return type:

布尔

__eq__(rhs)
Parameters:

rhsQJsonValue

Return type:

布尔

如果 lhs 值等于 rhs 值,则返回 true,否则返回 false

operator(key)
Parameters:

keyQLatin1String

Return type:

QJsonValue

operator(key)
Parameters:

key – str

Return type:

QJsonValue

这是一个重载函数。

operator(key)
Parameters:

key – str

Return type:

QJsonValue

返回一个QJsonValue,表示键key对应的值。

等同于调用 toObject() .value(key)。

如果键不存在,或者isObject()为假,则返回的QJsonValueUndefined

另请参阅

QJsonValue isUndefined() QJsonObject

operator(i)
Parameters:

i – 整数

Return type:

QJsonValue

返回一个QJsonValue,表示索引i的值。

相当于调用 toArray() .at(i)。

返回的 QJsonValueUndefined,如果 i 超出范围,或者如果 isArray() 为 false。

swap(other)
Parameters:

其他QJsonValue

将值 other 与此交换。此操作非常快速且永远不会失败。

toArray()
Return type:

QJsonArray

这是一个重载函数。

将值转换为数组并返回。

如果 type() 不是 Array,将返回一个 QJsonArray()

toArray(defaultValue)
Parameters:

defaultValueQJsonArray

Return type:

QJsonArray

将值转换为数组并返回它。

如果 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:

defaultValueQJsonObject

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 类型将按以下方式转换:

另请参阅

fromVariant()

type()
Return type:

类型

返回值的类型。

另请参阅

类型