我想閱讀使用Qt中的QScriptValue類的JSON對象,我注意到當迭代數組時,我總是會在最後得到一個額外的元素。Qt:QScriptValueIterator有一個額外的元素
比方說,我有一個名爲值這樣的字符串:
QString的價值= 「{\」 標識\ 「:\」 testID \ 「 \ 」PARAMS \「:[{\」 場\「:\」filed1:\「, \」datatype \「:\」integer \「,\」fieldend \「:\」\「},{\」field \「:\」field2: \ \「datatype \」:\「integer \」,\「fieldend \」:\「\」}]}「;
我的迭代的代碼如下所示:
QScriptValue sc;
QScriptEngine engine;
sc = engine.evaluate("("+value+")");
if(sc.isValid())
{
if(sc.property("params").isArray())
{
QScriptValueIterator it(sc.property("params"));
while(it.hasNext())
{
it.next();
qDebug()<< "field:" << it.value().property("field").toString();
qDebug()<< "datatype:" << it.value().property("datatype").toString();
qDebug()<< "fieldend:" << it.value().property("fieldend").toString();
qDebug()<< "--------------";
}
}
}
的輸出結果與具有空值的額外的元素:
field: "field1:"
datatype: "integer"
fieldend: " "
--------------
field: "field2: "
datatype: "integer"
fieldend: " "
--------------
field: ""
datatype: ""
fieldend: ""
--------------
我讀的QScriptValueIterator文檔和它說:
下一個( )推進迭代器。名字(),()值和標誌()函數返回的名稱,價值,那就是 的最後一個項目的標誌躍過
因此我適時改變我的迭代:
while(it.hasNext())
{
it.next();
qDebug() << it.name() << " : " << it.value().toString();
qDebug()<< "--------------";
}
但我得到的東西,我沒有想到:
"0" : "[object Object]"
--------------
"1" : "[object Object]"
--------------
"length" : "2"
--------------
任何人都可以指出我在做什麼錯在這裏?
謝謝。