从QT的Web服务中解析未命名的JSON数组



我正在尝试从Web服务解析此JSON。

  [
      {
        "word": "track",
        "score": 4144
      },
      {
        "word": "trail",
        "score": 2378
      },
      {
        "word": "domestic dog",
        "score": 51
      },
      {
        "word": "dogiron"
      }
  ]

当我将API调用的响应列入下面的QString时,它会很好,但所有引号都逃脱了,因此并不是使其成为有效的JSON:

QString response = (QString) data->readAll();
qDebug() << "Return data: n" << response;

我已经看到到目前为止已经看到的示例(例如解析JSONARRAY?(只有名为Arrays,它们可以从QJsonObject中抓取的名称。关于如何直接使用QJsonArray或与QJsonDocument::fromJson()一起在返回数据上的任何提示?

QJsonDocument有一个名为 array()的成员,该成员返回文档中包含的 QJsonArray

例如:

QFile file("main.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
QByteArray jsonData = file.readAll();
file.close();
QJsonParseError parseError;
QJsonDocument document = QJsonDocument::fromJson(jsonData, &parseError);
if (parseError.error != QJsonParseError::NoError)
{
    qDebug() << "Parse error: " << parseError.errorString();
    return;
}
if (!document.isArray())
{
    qDebug() << "Document does not contain array";
    return;
}
QJsonArray array = document.array();
foreach (const QJsonValue & v, array)
{
    QJsonObject obj = v.toObject();
    qDebug() << obj.value("word").toString();
    QJsonValue score = obj.value("score");
    if (!score.isUndefined())
        qDebug() << score.toInt();
}

最新更新