[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