Я использую QJson для анализа данных, возвращаемых в формате JSON. Один из возвращаемых элементов — это байтовый массив из 80 символов. Возвращение из QJson — это QVariantMap, который выглядит как массив длинных целых при просмотре в отладчике Qt Creator.
Есть ли лучший способ преобразовать QVariantMap в байтовый массив, чем итерация по карте, приведение каждого QVariant к байту и присвоение его байтовому массиву?
QByteArray byteArray[60];
QVariantMap returnedMap;
for (int n=0; n< returnedMap.count(); ++n){
byteArray[n] = (char)returnedMap[n];
}
(Код выше для иллюстрации, я не уверен, что правильный синтаксис для преобразования целого числа в байт. Приведенный выше код приводит к «неправильному приведению типа« QVariant »к типу char»)
Я не знаю, почему вы захотите привести карту, представляющую собой число пар «ключ-значение», в массив значений, но если вы захотите, синтаксис будет выглядеть примерно так:
QByteArray arr;
QVariantMap map;
foreach( QVariant tmp, map )
arr.append( tmp.toChar() );
Обратите внимание, что во время итерации по карте вы переходите от ключа к ключу в порядке возрастания, поэтому первый элемент массива будет таким с самым низким ключом, и наоборот.
Других решений пока нет …