- 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
另请参阅
- 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__1 –
Type
创建一个类型为
type
的QJsonValue
。默认情况下创建一个空值。
- __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)
- 参数:
other –
QJsonValue
创建
other
的副本。- __init__(o)
- 参数:
o –
QJsonObject
创建一个类型为Object的值,值为
o
。- __init__(a)
- 参数:
a –
QJsonArray
创建一个类型为Array的值,值为
a
。- __init__(b)
- 参数:
b – bool
创建一个类型为Bool的值,值为
b
。- __init__(s)
- 参数:
s –
QLatin1String
- static fromVariant(variant)
- 参数:
variant – objective
- 返回类型:
将
variant
转换为QJsonValue
并返回它。转换将按照以下方式将
QVariant
类型源类型
目标类型
String
。转换将使用toString()
方法,带有FullyEncoded
标志,以确保解析URL时的最大兼容性String
。从Qt 5.11开始,生成的字符串将不包括花括号toJsonValue()
返回的任何类型。toJsonValue()
。有关转换限制,请参阅。QJsonValue::Map。请参阅
toJsonValue()
关于转换限制和映射键的“字符串化”。信息丢失和其他类型#
QVariant
可以携带比JSON可表示的更多信息。如果QVariant
不是上面列出的类型之一,则转换不保证,并且可能在Qt的未来版本中改变,就像UUID那样。代码应该尽量避免使用上面列出的类型之外的任何类型。如果
isNull()
返回true,则会返回或插入nullQJsonValue
到列表或对象中,不管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()#
- 返回类型:
bool
如果值包含数组,则返回
true
。另请参阅
- isBool()#
- 返回类型:
bool
如果值包含布尔值,则返回
true
。另请参阅
- isDouble()#
- 返回类型:
bool
如果值包含双精度值,则返回
true
。另请参阅
- isNull()#
- 返回类型:
bool
如果值是null,则返回
true
。- isObject()#
- 返回类型:
bool
如果值包含一个对象,则返回
true
。另请参阅
- isString()#
- 返回类型:
bool
如果值包含一个字符串,则返回
true
。另请参阅
- isUndefined()#
- 返回类型:
bool
如果值是未定义的,则返回
true
。这可能在某些错误情况下发生,例如在QJsonObject
中访问一个不存在的键。- __ne__(other)#
- 参数:
other –
QJsonValue
- 返回类型:
bool
如果值不等于
other
,则返回true
。- __eq__(other)#
- 参数:
other –
QJsonValue
- 返回类型:
bool
如果值等于
other
,则返回true
。- operator(key)#
- 参数:
key –
QLatin1String
- 返回类型:
- operator(key)
- 参数:
key – str
- 返回类型:
这是一个重载函数。
- operator(key)
- 参数:
key – str
- 返回类型:
返回一个表示键
key
对应的值的QJsonValue
。等同于调用
toObject()
.value(key)。如果键不存在,或者如果
isObject()
返回false,则返回的QJsonValue
是Undefined
。另请参阅
QJsonValue
isUndefined()
QJsonObject
- 运算符(i)
- 参数:
i – 整数
- 返回类型:
返回表示索引
i
值的QJsonValue
对象。等同于调用
toArray()
.at(i)。如果
i
超出了索引范围,或者如果isArray()
返回 false,则返回的QJsonValue
是Undefined
。- swap(other)#
- 参数:
other –
QJsonValue
将值
other
与此交换。此操作非常快速且永远不会失败。- toArray()#
- 返回类型:
这是一个重载函数。
将值转换为数组并返回。
如果
type()
不是 Array 类型,则返回一个QJsonArray()
对象。- toArray(defaultValue)
- 参数:
defaultValue –
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)
- 参数:
defaultValue –
QJsonObject
- 返回类型:
QJsonObject
将值转换为对象并返回。
如果
type()
不是一个 Object 类型,返回defaultValue
。- toString()#
- 返回类型:
str
将值转换为 QString 类型并返回。
如果
type()
不是一个 String 类型,返回一个空的 QString。另请参阅
isNull()
- toString(defaultValue)
- 参数:
defaultValue – str
- 返回类型:
str
将值转换为 QString 类型并返回。
如果
type()
不是一个 String 类型,返回defaultValue
。- toVariant()#
- 返回类型:
object
将值转换为 QVariant 类型。
类型
QJsonValue
的转换如下:Null
另请参阅
返回值的类型。
另请参阅