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"
}
]
}
"

如果该文章对您有帮助,可以赞赏一下作者哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章