QJsonDocument :: array()和QJsonDocument :: object()

时间:2016-08-05 07:30:43

标签: qt qjson

我正在阅读QJsonDocument documentation,并使用QJsonDocument以下一行:

emit this->ueSignalNewDataArrivedPlaces(QJsonDocument::fromBinaryData(incomingData[0].toByteArray()));

我不明白,在这一行之后,我应该使用 QJsonDocument::array()还是QJsonDocument::object(),即在QJsonDocument创建array的情况下以及在什么情况下创建object

1 个答案:

答案 0 :(得分:3)

JSON数组是一个有序列表,它写为:

[ <item1>, <item2>, <item3> ]

而JSON对象是一个命名列表,写为:

{
    <name1>: <item1>,
    <name2>: <item2>
}

在Qt中,QJsonArray相当于QVariantListQList<QVariant>),而QJsonObject相当于QVariantMapQMap<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,其中之一是:QJsonValueQJsonObject,{{1 },QJsonArraybool