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

 

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

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

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

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

结果:

 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数组中的第一个值的引用

结果:


3、修改Page对象中的值,也是一样的方法:

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

完整代码:

    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;

 

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值