我想阅读使用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"
--------------
任何人都可以指出我在做什么错在这里?
谢谢。