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

Reply via email to