2012-10-08 73 views
0

我正在使用QJson來解析以json格式返回的數據。返回的項目之一是80個字符的字節數組。 QJson的返回是一個QVariantMap,當在Qt Creator調試器中查看時,它似乎是一個長整型數組。QJson QVariantMap到QByteArray

是否有更好的方式將QVariantMap轉換爲Byte數組而不是遍歷Map,將每個QVariant轉換爲一個字節並將其分配給字節數組?

QByteArray byteArray[60]; 
QVariantMap returnedMap; 
for (int n=0; n< returnedMap.count(); ++n){ 
    byteArray[n] = (char)returnedMap[n]; 
} 

(上面的代碼是用於說明,我不能肯定正確的語法是什麼投射到一個字節的整數。在以上的QVariant「從類型無效的轉換‘的結果的代碼’爲類型‘焦炭’ )

回答

0

我不知道爲什麼你會想要投影一個映射,這是一個「鍵 - 值」對數值成一個值的數組,但如果你想要的話,語法就像

QByteArray arr; 
QVariantMap map; 
foreach(QVariant tmp, map) 
    arr.append(tmp.toChar()); 

請注意,在遍歷地圖的同時,您將按鍵以升序鍵入,因此第一個數組的元素應該是最低的鍵,反之亦然。

+0

你的回答讓我走上了正軌。 QJson實際上是返回uLongLong值列表而不是ByteArray。我需要將每個uLongLong轉換爲一個Byte,我假設它與char相同。 – DarwinIcesurfer