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

如果該文章對您有幫助,可以讚賞一下作者哦~

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