QJsonDocument::array() 和 QJsonDocument::object()
QJsonDocument::array() and QJsonDocument::object()
我正在阅读 QJsonDocument documentation 并且我使用 QJsonDocument
和以下行:
emit this->ueSignalNewDataArrivedPlaces(QJsonDocument::fromBinaryData(incomingData[0].toByteArray()));
我不明白,在这一行之后,我应该使用 QJsonDocument::array() or QJsonDocument::object(),即 QJsonDocument
在什么情况下创建 array
以及在什么情况下创建 object
?
一个JSON数组是一个有序列表,写成:
[ <item1>, <item2>, <item3> ]
而 JSON 对象是一个命名列表,写为:
{
<name1>: <item1>,
<name2>: <item2>
}
在Qt中,QJsonArray
等价于QVariantList
(QList<QVariant>
),QJsonObject
等价于QVariantMap
(QMap<QString, QVariant>
).
您必须使用哪一个取决于您正在解析的文件。
例如,以维基百科为例:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
您将使用 QJsonArray
来获取 phoneNumbers
的列表,phoneNumbers
的每个元素都是一个 QJsonObject
和 2 个命名值:type
和 number
.
如果在您的代码中您需要操作一个 JSON 元素但您不知道它的类型,您可以使用 QJsonValue
,它是以下之一:QJsonObject
、QJsonArray
、bool
、double
或 QString
我正在阅读 QJsonDocument documentation 并且我使用 QJsonDocument
和以下行:
emit this->ueSignalNewDataArrivedPlaces(QJsonDocument::fromBinaryData(incomingData[0].toByteArray()));
我不明白,在这一行之后,我应该使用 QJsonDocument::array() or QJsonDocument::object(),即 QJsonDocument
在什么情况下创建 array
以及在什么情况下创建 object
?
一个JSON数组是一个有序列表,写成:
[ <item1>, <item2>, <item3> ]
而 JSON 对象是一个命名列表,写为:
{
<name1>: <item1>,
<name2>: <item2>
}
在Qt中,QJsonArray
等价于QVariantList
(QList<QVariant>
),QJsonObject
等价于QVariantMap
(QMap<QString, QVariant>
).
您必须使用哪一个取决于您正在解析的文件。 例如,以维基百科为例:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
}
您将使用 QJsonArray
来获取 phoneNumbers
的列表,phoneNumbers
的每个元素都是一个 QJsonObject
和 2 个命名值:type
和 number
.
如果在您的代码中您需要操作一个 JSON 元素但您不知道它的类型,您可以使用 QJsonValue
,它是以下之一:QJsonObject
、QJsonArray
、bool
、double
或 QString