0

QT で JSON を解析したい。JSON は次のようになります。

{
"result": "ok",
"phrase": "katze",
"tuc": [
    {
        "meaningId": -6468009888908805000,
        "meanings": [
            {
                "text": "common name for animals",
                "language": "eng"
            }
        ],
        "phrase": {
            "text": "cats",
            "language": "eng"
        }
    },
    {
        "meaningId": -1913936533709497000,
        "phrase": {
            "text": "felis catus",
            "language": "eng"
        }
    },
    {
        "meaningId": 8369732998154311000,
        "phrase": {
            "text": "jack",
            "language": "eng"
        }
    }
],
"from": "deu"
}

そして、私は次のコードを使用します:

void Slovari::fileIsReady( QNetworkReply * reply)
{
    QByteArray rawData = reply->readAll();
    QJsonDocument doc(QJsonDocument::fromJson(rawData));
    QJsonObject jsonObject = doc.object();
    QVariantMap mainmap = jsonObject.toVariantMap();
    QVariantList phraseList = mainmap["tuc"].toList();
}

したがって、「tuc」配列のバリアント リストを取得します。一般に、キー「フレーズ」を持つすべてのオブジェクトと、この配列の内容であるそれらの値を取得したいと考えています。ここから抜け出す方法はありますか?または、これは QVariantList では機能しませんか?

4

1 に答える 1

1

解決策は

QVariantList phrases;
Q_FOREACH (const QVariant &v, phraseList) {
    QVariantMap m = v.toMap();

    if (m.contains("phrase")) {
        phrases << m["phrase"].toMap();
    }
}
于 2014-08-15T21:39:23.987 に答える