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

class 类型#

此枚举描述了 JSON 值的类型。

常量

描述

QJsonValue.Null

一个 Null 值

QJsonValue.Bool

一个布尔值。使用 toBool() 转换为布尔值。

QJsonValue.Double

一个数值。使用 toDouble() 转换为双精度浮点数,或使用 toInteger() 转换为 qint64。

QJsonValue.String

一个字符串。使用 toString() 将其转换为 QString

QJsonValue.Array

数组。使用 toArray() 将其转换为 QJsonArray

QJsonValue.Object

对象。使用 toObject() 将其转换为 QJsonObject

QJsonValue.Undefined

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

__init__(v)#
参数:

v – int

这是一个重载函数。

创建一个类型为 Double 的值,值为 v。注:IEEE 754 双精度浮点数据的整数限制为 2^53 (-9007199254740992 到 +9007199254740992)。如果你传递了超出此范围的值,则可能会发生精度损失。

__init__([arg__1=QJsonValue.Type.Null])
参数:

arg__1Type

创建一个类型为 typeQJsonValue

默认情况下创建一个空值。

__init__(n)
参数:

n – int

这是一个重载函数。

创建一个值为 v 类型为 Double 的值。

__init__(n)
参数:

n – float

创建一个值为 v 类型为 Double 的值。

__init__(s)
参数:

s – str

创建一个值为 s 类型为 String 的值,假设输入的 UTF-8 编码。

您可以通过在编译应用程序时定义 QT_NO_CAST_FROM_ASCII 来禁用此构造函数。

__init__(s)
参数:

s – str

创建一个值为 s 类型为 String 的值。

__init__(other)
参数:

otherQJsonValue

创建 other 的副本。

__init__(o)
参数:

oQJsonObject

创建一个类型为Object的值,值为o

__init__(a)
参数:

aQJsonArray

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

__init__(b)
参数:

b – bool

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

__init__(s)
参数:

sQLatin1String

static fromVariant(variant)
参数:

variant – objective

返回类型:

QJsonValue

variant转换为QJsonValue并返回它。

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

源类型

目标类型

Null

布尔

双精度浮点

字符串

数组

对象

String 。转换将使用toString()方法,带有FullyEncoded标志,以确保解析URL时的最大兼容性

String 。从Qt 5.11开始,生成的字符串将不包括花括号

toJsonValue()返回的任何类型。

toJsonValue()。有关转换限制,请参阅。

QJsonValue::Map。请参阅toJsonValue()关于转换限制和映射键的“字符串化”。

信息丢失和其他类型#

QVariant可以携带比JSON可表示的更多信息。如果QVariant不是上面列出的类型之一,则转换不保证,并且可能在Qt的未来版本中改变,就像UUID那样。代码应该尽量避免使用上面列出的类型之外的任何类型。

如果isNull()返回true,则会返回或插入null 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()#
返回类型:

bool

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

另请参阅

toArray()

isBool()#
返回类型:

bool

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

另请参阅

toBool()

isDouble()#
返回类型:

bool

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

另请参阅

toDouble()

isNull()#
返回类型:

bool

如果值是null,则返回 true

isObject()#
返回类型:

bool

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

另请参阅

toObject()

isString()#
返回类型:

bool

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

另请参阅

toString()

isUndefined()#
返回类型:

bool

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

__ne__(other)#
参数:

otherQJsonValue

返回类型:

bool

如果值不等于 other,则返回 true

__eq__(other)#
参数:

otherQJsonValue

返回类型:

bool

如果值等于 other,则返回 true

operator(key)#
参数:

keyQLatin1String

返回类型:

QJsonValue

operator(key)
参数:

key – str

返回类型:

QJsonValue

这是一个重载函数。

operator(key)
参数:

key – str

返回类型:

QJsonValue

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

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

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

另请参阅

QJsonValue isUndefined() QJsonObject

运算符(i)
参数:

i – 整数

返回类型:

QJsonValue

返回表示索引 i 值的 QJsonValue 对象。

等同于调用 toArray() .at(i)。

如果 i 超出了索引范围,或者如果 isArray() 返回 false,则返回的 QJsonValueUndefined

swap(other)#
参数:

otherQJsonValue

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

toArray()#
返回类型:

QJsonArray

这是一个重载函数。

将值转换为数组并返回。

如果 type() 不是 Array 类型,则返回一个 QJsonArray() 对象。

toArray(defaultValue)
参数:

defaultValueQJsonArray

返回类型:

QJsonArray

将值转换为数组并返回。

如果 type() 不是 Array 类型,则返回 defaultValue

toBool([defaultValue=false])#
参数:

defaultValue – 布尔型

返回类型:

bool

将值转换为布尔类型并返回。

如果 type() 不是布尔型,则返回 defaultValue

toDouble([defaultValue=0])#
参数:

defaultValue – 浮点型

返回类型:

浮点型值

将值转换为浮点数并返回。

如果 type() 不是一个 Double 类型,将返回 defaultValue

toInt([defaultValue=0])#
参数:

defaultValue – int

返回类型:

int

将数值转换为 int 类型并返回。

如果 type() 不是一个 Double 类型或者值不是一个整数,将返回 defaultValue

toInteger([defaultValue=0])#
参数:

defaultValue – int

返回类型:

int

将值转换为整数并返回。

如果 type() 不是一个 Double 类型或者值不是一个能够表示为 qint64 的整数,将返回 defaultValue

toObject()#
返回类型:

QJsonObject

这是一个重载函数。

将值转换为对象并返回。

如果 type() 不是一个 Object 类型,返回一个空的 QJsonObject()

toObject(defaultValue)
参数:

defaultValueQJsonObject

返回类型:

QJsonObject

将值转换为对象并返回。

如果 type() 不是一个 Object 类型,返回 defaultValue

toString()#
返回类型:

str

将值转换为 QString 类型并返回。

如果 type() 不是一个 String 类型,返回一个空的 QString。

另请参阅

isNull()

toString(defaultValue)
参数:

defaultValue – str

返回类型:

str

将值转换为 QString 类型并返回。

如果 type() 不是一个 String 类型,返回 defaultValue

toVariant()#
返回类型:

object

将值转换为 QVariant 类型。

类型 QJsonValue 的转换如下:

另请参阅

fromVariant()

type()#
返回类型:

类型

返回值的类型。

另请参阅

类型