- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Qt 中的 QScriptValue 类读取 JSON 对象,我注意到在遍历数组时我总是在末尾得到一个额外的元素。
假设我有一个名为 value 的字符串,如下所示:
QString value = "{\"identifier\":\"testID\", \"params\":[{\"field\":\"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 的文档它说:
The next() advances the iterator. The name(), value() and flags() functions return the name, value and flags of the last item that was jumped over
所以我相应地改变了我的迭代:
while(it.hasNext())
{
it.next();
qDebug() << it.name() << " : " << it.value().toString();
qDebug()<< "--------------";
}
但我得到了一些我没想到的东西:
"0" : "[object Object]"
--------------
"1" : "[object Object]"
--------------
"length" : "2"
--------------
谁能指出我在这里做错了什么?
谢谢。
最佳答案
我遇到了同样的问题,我在 it.next() 之后添加了这一行;线:如果 (it.flags() & QScriptValue::SkipInEnumeration) 继续;您可以在此处找到有关它的更多信息: http://developer.qt.nokia.com/doc/qt-4.8/qscriptvalueiterator.html#details
关于c++ - Qt:QScriptValueIterator 有一个额外的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167237/
我正在尝试使用 Qt 中的 QScriptValue 类读取 JSON 对象,我注意到在遍历数组时我总是在末尾得到一个额外的元素。 假设我有一个名为 value 的字符串,如下所示: QString
我是一名优秀的程序员,十分优秀!