2012-02-06 92 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" 
-------------- 

任何人都可以指出我在做什么错在这里?

谢谢。

回答

相关问题