我正在阅读QJsonDocument documentation,并使用QJsonDocument
以下一行:
emit this->ueSignalNewDataArrivedPlaces(QJsonDocument::fromBinaryData(incomingData[0].toByteArray()));
我不明白,在这一行之后,我应该使用 QJsonDocument::array()还是QJsonDocument::object(),即在QJsonDocument
创建array
的情况下以及在什么情况下创建object
?
答案 0 :(得分:3)
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
和{ {1}}。
如果在您的代码中您需要操作JSON元素但您不知道其类型,则可以使用number
,其中之一是:QJsonValue
,QJsonObject
,{{1 },QJsonArray
或bool