[Interest] Qt 5: Converting QJsonValue to QJsonArray

lars.knoll at nokia.com lars.knoll at nokia.com
Mon Aug 13 23:47:15 CEST 2012


On Aug 13, 2012, at 11:21 PM, ext Stephen Chu <stephen at ju-ju.com> wrote:

> On 8/13/12 9:24 AM, lars.knoll at nokia.com wrote:
>> 
>> On Aug 8, 2012, at 9:14 PM, ext Stephen Chu <stephen at 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





More information about the Interest mailing list