hydelios 2021-05-13 16:16 采纳率: 20%
浏览 63
已结题

QT 想在Json文件的某个字段中增加一个记录,应该怎么做

比如说想在USER里增加一个“456”:[.......]

应该怎么做?

{
    "USER":{
        "123":[
            {
                "associatedac":"",
                "character":"交易员",
                "operator":"123",
                "password":"123",
                "status":"正常",
                "username":"123"
            }
        ],
        "232":[
            {
                "associatedac":"",
                "character":"交易员",
                "operator":"234",
                "password":"234",
                "status":"正常",
                "username":"234"
            }
        ]
    },
    "ACCOUNT":{
        "123":[
            {
                "accountcode":"",
                "productname":"交易员",
                "producttype":"123",
                "status":"123"
            }
        ],
        "232":[
            {
                "accountcode":"",
                "productname":"交易员",
                "producttype":"234",
                "status":"234"
            }
        ]
    }
}

 代码不知道怎么写


int RWJson::writeJson(const QStringList& record,charttype type)
{
    // 写Json:先根据传参找type字段,get到所有的object,找匹配段并更改,若不存在则插入一条新的记录
    QFile file(SAVE_PATH);
    if(!file.open(QIODevice::ReadWrite)) {
        qDebug() << "File open error";
    } else {
        qDebug() <<"File open!";
    }

    QString jsonvalue = file.readAll();
    QJsonParseError parseJsonErr;
    QJsonDocument document = QJsonDocument::fromJson(jsonvalue.toLocal8Bit(), &parseJsonErr);
    if (!(parseJsonErr.error == QJsonParseError::NoError))
    {
        //QMessageBox::about(NULL, "提示", "配置文件错误!");
        qDebug()<<"parseJson:"<<parseJsonErr.errorString();
    }

    QJsonObject obj = document.object();


    QJsonDocument jdoc;
    QJsonObject trecord;
    QJsonArray arr;//一条记录,是字段的和集
    QJsonObject member;//每个字段

    if(obj.contains("USER") && type==USER)
    {
        QJsonValue value = obj.value("USER");
        QJsonObject objuser = value.toObject();
        member.insert( "username",record[0]);/*"username",*/
        member.insert( "associatedac",record[1]);/*"associatedac",*/
        member.insert( "character",record[2]);/*"character",*/
        member.insert( "status",record[3]);/*"status",*/
        member.insert( "operator",record[4]);/*"operator",*/
        member.insert( "password",record[5]);/*"password",*/
        arr.append(member);
        objuser[record[0]]=arr;

        jdoc.setObject(trecord);
    }

    if(obj.contains("ACCOUNT") && type==ACCOUNT)
    {
        QJsonValue value = obj.value("ACCOUNT");
        QJsonObject objac = value.toObject();
        member.insert("accountcode", record[0]);
        member.insert("productname", record[1]);
        member.insert("producttype", record[2]);
        member.insert("status", record[3]);
        arr.append(member);
        objac[record[0]]=arr;

        jdoc.setObject(trecord);
    }
}
  • 写回答

3条回答 默认 最新

  • 源代码大师 博客专家认证 2021-05-13 18:10
    关注

    用QJson做,.QJsonObject:代表一个Json对象,包含多个键-值对;
    2.QJsonArray:代表一个Json数组,可用下标的方法遍历,具体的值可为QJsonValue类型;
    3.QJsonValue:代表具体的值,值可以是QJsonObject,也可以是QJsonArray(可用isObject()和isArray()方法来判断),或者其他类型;
    4.QJsonDocument:提供读写一个Json文档的方法,可以返回QJsonObject或QJsonArray,可用isObject()和isArray()方法来判断;
    5.QJsonParseError:存储解析Json过程中出现的错误。
    望采纳,不懂的可以关注私信我。

    评论

报告相同问题?

悬赏问题

  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现