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);
    }
}

 

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

将文件的json数据读进来然后格式化为QJsonObject,找到你的key,然后插入数据,再格式化成文本,写回去就行了

https://sourceforge.net/projects/libjson/

使用libjson库解析吧,学会以后在c或者c++环境下都可以使用,不局限在qt了