QT:json值的修改--QJsonValueRef

首先构建一个json对象:

    QJsonArray versionArray;
    versionArray.append(4.8);
    versionArray.append(5.2);
    versionArray.append(5.7);

    QJsonObject pageObject;
    pageObject.insert("Home", "https://www.qt.io/");
    pageObject.insert("Download", "https://www.qt.io/download/");
    pageObject.insert("Developers", "https://www.qt.io/developers/");

    QJsonObject json;
    json.insert("Name", "Qt");
    json.insert("Company", "Digia");
    json.insert("From", 1991);
    json.insert("Version", QJsonValue(versionArray));
    json.insert("Page", QJsonValue(pageObject));

QT:json值的修改--QJsonValueRef_第1张图片

 

对这个json对象中的部分数据做修改,如果通过toArray或toObject转换后修改,那么修改后的值不会影响原来的对象,如果要直接修改原对象,那么可以用QJsonValueRef 。

1、Page的值是一个object,改成其他类型:

    QJsonValueRef RefPage = json.find("Page").value();
    RefPage = QJsonValue("8888");

QJsonValueRef 获取的是json对象中Page值的引用

结果:

QT:json值的修改--QJsonValueRef_第2张图片

 2、修改数组Version中的值:

    QJsonValueRef RefVersion = json.find("Version").value();
    QJsonArray array = RefVersion.toArray();
    QJsonValueRef ElementOneValueRef = array[0];
    ElementOneValueRef = QJsonValue("44.88");
    RefVersion = array;

 RefVersion是对象中Version数组的引用

 ElementOneValueRef是array数组中的第一个值的引用

结果:

QT:json值的修改--QJsonValueRef_第3张图片
3、修改Page对象中的值,也是一样的方法:

    QJsonValueRef RefPage = json.find("Page").value();
    QJsonObject obj = RefPage.toObject();
    obj["Home"] = "www.baidu.com";
    RefPage = obj;

QT:json值的修改--QJsonValueRef_第4张图片

完整代码:

    QJsonArray versionArray;
    versionArray.append(4.8);
    versionArray.append(5.2);
    versionArray.append(5.7);

    QJsonObject pageObject;
    pageObject.insert("Home", "https://www.qt.io/");
    pageObject.insert("Download", "https://www.qt.io/download/");
    pageObject.insert("Developers", "https://www.qt.io/developers/");

    QJsonObject json;
    json.insert("Name", "Qt");
    json.insert("Company", "Digia");
    json.insert("From", 1991);
    json.insert("Version", QJsonValue(versionArray));
    json.insert("Page", QJsonValue(pageObject));

    qDebug() << json;

//    QJsonValueRef RefPage = json.find("Page").value();
//    RefPage = QJsonValue("8888");
    QJsonValueRef RefPage = json.find("Page").value();
    QJsonObject obj = RefPage.toObject();
    obj["Home"] = "www.baidu.com";
    RefPage = obj;

    qDebug() << json;

//    QJsonValueRef RefVersion = json.find("Version").value();
//    QJsonArray array = RefVersion.toArray();
//    QJsonValueRef ElementOneValueRef = array[0];
//    ElementOneValueRef = QJsonValue("44.88");
//    RefVersion = array;
//    qDebug() << json;

 

你可能感兴趣的:(QT填坑纪录,QT日常记录)