2012-02-06 151 views
1

我想閱讀使用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" 
-------------- 

任何人都可以指出我在做什麼錯在這裏?

謝謝。

回答

相關問題