gpt4 book ai didi

c++ - 如何使用Ct Qt解析此JSON?

转载 作者:行者123 更新时间:2023-12-02 10:32:16 24 4
gpt4 key购买 nike

我有一个像这样的json:

{
"name1": {
"path": "D:/myfolder"
},
"name2": {
"path": "D:/anotherFolder"
},
"name3": {
"path": "D:/myfolder"
}
}

我想得到:是名称和文件夹名称。
喜欢 :
   name1, D:/myfolder
name2, D:/anotherFolder
name3, D:/myfolder

我是独立保存还是在 map 中获取都不重要,因为我想保存它们
将新变量转换为另一个结构。
到目前为止,我有:
QString jsonFile = "myjson.json";
QFile loadFile(jsonFile);

if(!loadFile.open(QIODevice::ReadOnly)){
qDebug() << "Failed to open " << loadFile; }

QByteArray data = loadFile.readAll();
QJsonDocument loadDoc(QJsonDocument::fromJson(data));

QJsonObject json = loadDoc.object();
QStringList keys = json.keys(); // <------- that give me the names. check.

但是我没有得到:如何获得第二个元素?!
到目前为止,最近的方法是使用foreach获得“第二维”:
foreach(const QJsonValue path, json ){
qInfo() << path;
}

这给了我作为输出:
QJsonValue(object, QJsonObject({"path": "D:/myfolder"}))
QJsonValue(object, QJsonObject({"path": "D:/anotherFolder"}))
QJsonValue(object, QJsonObject({"path": "D:/myfolder"}))

最佳答案

最佳方法是仅使用单个进行迭代

QJsonDocument doc = QJsonDocument::fromJson(data);
QJsonObject json = doc.object();
for (auto it = json.constBegin(); it != json.constEnd(); ++it)
{
qInfo() << it.key() << it.value().toObject().value("path").toString();
}

关于c++ - 如何使用Ct Qt解析此JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61828574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com