QT之Json解析与生成

1、解析Json

    QFile loadFile("文件路径");
    if(!loadFile.open(QIODevice::ReadOnly))
    {
        qDebug() << "could't open projects json";
        return;
    }

    QByteArray allData = loadFile.readAll();    // 读取文件所有内容
    loadFile.close();

    QJsonParseError jsonError;
    QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &jsonError));
    if(jsonError.error != QJsonParseError::NoError)
    {
        qDebug() << "json error!" << jsonError.errorString();
        return;
    }

    QJsonObject rootObj = jsonDoc.object();
    for(int i = 0; i < JSONList.size(); i++){    //JSONList为传入的列表数据(QStringList)
        if(rootObj.contains(JSONList.at(i))){
            QJsonValue value = rootObj.value(JSONList.at(i));
            if(value.isString()){
                QString valueData = value.toString();
                ui->textEdit_2->append(JSONList.at(i) + ": " + valueData);
            }
        }
    }

2、生成Json

    QJsonObject json;
    for(int i = 0; i < keyJson.size(); i++){    // keyJson代表key值,valueJson代表value值(QStringList)
        if(keyJson.at(i) == ""){
            continue;
        }
        json.insert(keyJson.at(i), valueJson.at(i));
    }
    // 构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    QByteArray byteArray = document.toJson(QJsonDocument::Compact);
    QString strJson(byteArray);
    qDebug() << strJson;

 

posted on 2021-05-14 17:13  缘随风烬  阅读(263)  评论(0编辑  收藏  举报