On Aug 13, 2012, at 11:21 PM, ext Stephen Chu <step...@ju-ju.com> wrote:
> On 8/13/12 9:24 AM, lars.kn...@nokia.com wrote: >> >> On Aug 8, 2012, at 9:14 PM, ext Stephen Chu <step...@ju-ju.com> wrote: >> >>> I am trying out the new QJsonValue in Qt 5 and find myself wondering: >>> Does converting a QJsonValue which is an array to a QJsonArray with >>> QJsonValue::toArray() makes a copy of the underlying data? >>> >>> Say I load a JSON file which is an object that contains an array with >>> thousands of items using QJsonDocument: >>> >>> auto myObj = QJsonDocument::fromJson(jsonData).object(); >>> auto myArray = myObject["theArray"].toArray(); >>> >>> How efficient is the conversion? Does it make a deep copy of the data in >>> the original object to the new array? >> >> No it doesn't make any deep copies as long as the data is not being modified. >> > > Thanks. That's good to know. > > Now, what happens if I want to modify one of the 1000 items in an array that > is an item of a QJsonObject? Looks like I need to make a copy of the array > with toArray(), change the item, then assign the modified (and deep copied) > array back to the item in the object? > > There doesn't seem to have a way to get a reference to a second-level item in > an object or array. No, not currently. The reason is that the internal data structure is optimised for reading, not writing. But I was considering adding some API that returns references after 5.0. Cheers, Lars _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest