2

私はQJsonDocument ドキュメントを読んでおり、次の行で使用QJsonDocumentしています:

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

そして、この行の後、QJsonDocument::array()またはQJsonDocument::object()を使用する必要があるかどうか、つまり、どのような状況でQJsonDocumentcreatearrayを使用し、どのような状況でcreate を使用する必要があるのか​​ わかりませobjectん。

4

1 に答える 1

4

JSON 配列は順序付けられたリストであり、次のように記述されます。

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

一方、JSON オブジェクトは名前付きリストであり、次のように記述されます。

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

Qt では、 aQJsonArrayは ( ) に相当し、aはQVariantList( )に相当します。QList<QVariant>QJsonObjectQVariantMapQMap<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は、QJsonObject2 つの名前付き値:typeおよびnumberです。

コード内で JSON 要素を操作する必要があるが、その型がわからない場合は、次のいずれかを使用できますQJsonValue: QJsonObjectQJsonArraybooldoubleまたはQString

于 2016-08-05T07:45:04.323 に答える