如何使用Qt

时间:2017-03-28 16:26:30

标签: c++ json qt

我一直在尝试用Qt从json文件中读取数据,但无法找到正确的方法。我尝试过很多东西,但是做不到。有人可以帮我解决这个问题吗?

{
    "RawData": {
        "Sensors": {
            "Channel1" : "10",
            "Channel2" : "22",
            "Channel3" : "3",
            "Channel4" : "48",
            "Channel5" : "1",
            "Channel6" : "8",
            "Channel7" : "16",
            "Channel8" : "44"
        }
    }
}

现在我的代码看起来像这样,虽然我用不同的方式尝试了很多东西。

QFile jsonCfg("config.json");
if (!jsonCfg.open(QIODevice::ReadOnly)) {
    qWarning("Couldn't open json config file.");
    return false;
}
QByteArray saveData = jsonCfg.readAll();
QJsonDocument loadDoc(QJsonDocument::fromJson(saveData));
QJsonObject config = loadDoc.object();
QVariantMap root_map = config.toVariantMap();
QVariantMap raw = root_map["RawData"].toMap();
QVariantMap sensor = raw["Sensors"].toMap();
qDebug() << "channel 1" << sensor["Channel1"].toDouble();

1 个答案:

答案 0 :(得分:0)

你可以使用QJsonDocument和QJsonObject,就像:

QJsonParseError jsonErr;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr,&jsonErr);
if(jsonErr.error == QJsonParseError::NoError)
{
    QJsonObject myJsonObject = jsonDoc.object();
    if(myJsonObject["RawData"].isObject())
    {
        //do somethine your want;
    }
}