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"
}
]
}
"
如果該文章對您有幫助,可以讚賞一下作者哦~