Qt-修改QJsonArray和QJsonObjectt对象的值

    xiaoxiao2022-07-06  212

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

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

    最新回复(0)