Solved. If interested, below the code:
void Dialog::on_pushButton_clicked()
{
QFile file(QDir::homePath() + "/.config/chromium/Default/Bookmarks");
return;
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse(&file, &ok).toMap();
file.close();
if (!ok) {
ui->plainTextEdit->appendPlainText("An error occurred during parsing");
return;
}
QVariantMap rootsMap = result["roots"].toMap();
QMapIterator<QString, QVariant> i(rootsMap);
while (i.hasNext()) {
i.next();
QVariantMap map = rootsMap[i.key()].toMap();
getChildren(map);
}
}
void Dialog::getChildren(const QVariantMap & map) {
QVariantList childrenMap = map["children"].toList();
for(int i = 0; i < childrenMap.size(); i++) {
QVariantMap nestedMap = childrenMap.at(i).toMap();
if(nestedMap["type"].toString()=="url") {
m_name = nestedMap["name"].toString();
m_url = nestedMap["url"].toString();
// do something...
}
if(nestedMap.contains("children"))
getChildren(nestedMap);
}
}
void Dialog::on_pushButton_clicked()
{
QFile file(QDir::homePath() + "/.config/chromium/Default/Bookmarks");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse(&file, &ok).toMap();
file.close();
if (!ok) {
ui->plainTextEdit->appendPlainText("An error occurred during parsing");
return;
}
QVariantMap rootsMap = result["roots"].toMap();
QMapIterator<QString, QVariant> i(rootsMap);
while (i.hasNext()) {
i.next();
QVariantMap map = rootsMap[i.key()].toMap();
getChildren(map);
}
}
void Dialog::getChildren(const QVariantMap & map) {
QVariantList childrenMap = map["children"].toList();
for(int i = 0; i < childrenMap.size(); i++) {
QVariantMap nestedMap = childrenMap.at(i).toMap();
if(nestedMap["type"].toString()=="url") {
m_name = nestedMap["name"].toString();
m_url = nestedMap["url"].toString();
// do something...
}
if(nestedMap.contains("children"))
getChildren(nestedMap);
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks