Qt-修改QJsonArray和QJsonObjectt对象的值

QJsonValue只要调用toArray或者toObject之后实际上是拷贝了一份,达不到修改源对象的效果,想要修改源对象的值,参考下面代码

 std::string json = R"({
                       "firstName": "John",
                       "lastName": "Smith",
                       "age": 25,
                       "address":
                       {
                       "streetAddress": "21 2nd Street",
                       "city": "New York",
                       "state": "NY",
                       "postalCode": "10021"
                       },
                       "phoneNumber":
                       [
                           {
                           "type": "home",
                           "number": "212 555-1234"
                           },
                           {
                           "type": "fax",
                           "number": "646 555-4567"
                           }
                       ]
                       })";
    auto const& jdoc = QJsonDocument::fromJson(QByteArray::fromStdString(json));
    QJsonObject RootObject = jdoc.object();

    QJsonValueRef ArrayRef = RootObject.find("phoneNumber").value();
    QJsonArray Array = ArrayRef.toArray();

    QJsonArray::iterator ArrayIterator = Array.begin();
    QJsonValueRef ElementOneValueRef = ArrayIterator[0];

    QJsonObject ElementOneObject = ElementOneValueRef.toObject();

    //修改原有的Object
    ElementOneObject.insert("type","school");

    //修改原有的Array
    QJsonObject tmpObject;
    tmpObject.insert("type","company");
    tmpObject.insert("number","110 555-666");
    Array.append(tmpObject);


    ElementOneValueRef = ElementOneObject;
    ArrayRef = Array;

    qDebug()<<QString(QJsonDocument(RootObject).toJson());

运行结果

"{
"address": {
"city": "New York",
"postalCode": "10021",
"state": "NY",
"streetAddress": "21 2nd Street"
},
"age": 25,
"firstName": "John",
"lastName": "Smith",
"phoneNumber": [
{
"number": "212 555-1234",
"type": "school"
},
{
"number": "646 555-4567",
"type": "fax"
},
{
"number": "110 555-666",
"type": "company"
}
]
}
"
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值