Qt – 读写json文件

Qt自带类可以对json文件进行操作:QJsonDocument,QJosnObject, QJsonArray,QJsonValue,QJsonParseError

组装json串并写文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    QJsonObject dObj;
    for(const auto &d : qAsConst(List)) {
        QJsonObject newObj;
        newObj.insert("Name", d.Name);
        newObj.insert("Passwd", d.Passwd);
        QJsonArray array = dObj["Info"].toArray();
        array.append(newObj);
        dObj.remove("Info");
        dObj.insert("Info", array);
    }
    dObj.insert("Rember", Rember);
    QFile file("JTest.json");
    if(!file.open(QIODevice::WriteOnly)) {
        qDebug() << "can not open file.";
        return;
    }
    QJsonDocument doc;
    doc.setObject(dObj);
    QByteArray ba = doc.toJson(QJsonDocument::Compact);
    QDataStream out(&file);
    out << ba;
    file.close();

读取并解析json文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    QFile file("JTest.json");
    if(!file.open(QIODevice::ReadOnly)) {
        qDebug() << "can not open file.";
        return;
    }
    QDataStream in(&file);
    QByteArray ba;
    in >> ba;
    file.close();
    QJsonParseError Err;
    QJsonDocument doc = QJsonDocument::fromJson(ba, &Err);
    if(QJsonParseError::NoError == Err.error) {
        if(doc.isObject()) {
            QJsonObject dObj = doc.object();
            if(dObj.contains("Info")) {
                QJsonArray array = dObj["Info"].toArray();
                for(const auto &d : qAsConst(array)) {
                    QJsonObject obj = d.toObject();
                    AccList.push_back(AccPwd(obj["Name"].toString(), obj["Passwd"].toString()));
                }
            }
            if(dObj.contains("Rember")) {
                CheckRembPwd = dObj["Rember"].toInt();
            }
        }
    }
    Rember = CheckRembPwd;

发表评论

电子邮件地址不会被公开。 必填项已用*标注