2017-03-28 58 views
0

我一直试图从一个像下面的QT一样的JSON文件中读取数据,但无法找到正确执行的方法。我尝试了很多东西,但无法做到。有人可以帮助我如何正确地得到这个?如何从嵌套的json文件中读取数据与Qt

{ 
    "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(); 
+0

以JSON你有“传感器”,但在代码中,你要寻找的“传感器”。 –

+0

你是对的谢谢。在粘贴之前,我刚更名了字段。但是这仍然不起作用。 – VinzO

+0

好吧,我发现文件没有打开,出于某种原因,警告没有显示。 – VinzO

回答

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; 
    } 
} 
+0

感谢您的回复,但这仍然没有给我提示如何获得“Channel1”字段。 – VinzO