QScriptでQScriptValueクラスを使用してJSONオブジェクトを読み込もうとしていますが、配列を反復処理すると、最後に余分な要素が常にあることに気付きました。Qt:QScriptValueIteratorに余分な要素があります
のは、私はこのような値をという名前の文字列があるとしましょう:
QStringの値= "{\" 識別子\:テストID \ "\ "のparams \ "\"":[{\" フィールドを\ "フィールド\:フィールド\:フィールド2: \"、\ "フィールド1:\" \ "データ型\":\ "整数\"、\ "フィールドエンド\":\ "\"}]} ";私はQScriptValueIteratorのマニュアルを読み、それが言う
field: "field1:" datatype: "integer" fieldend: " " -------------- field: "field2: " datatype: "integer" fieldend: " " -------------- field: "" datatype: "" 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()<< "--------------"; } } }
空の値を持っている余分な要素と出力結果:繰り返しのため
私のコードは次のようになります。
次( )はイテレータを進めます。名前()、値()とフラグ()関数は、だから私はそれに応じて自分の反復を変え
を飛び越えた名前、値、および をした最後の項目のフラグを返します。
while(it.hasNext())
{
it.next();
qDebug() << it.name() << " : " << it.value().toString();
qDebug()<< "--------------";
}
しかし、私は期待していない何かを得る:
"0" : "[object Object]"
--------------
"1" : "[object Object]"
--------------
"length" : "2"
--------------
私はここで間違って何を指摘することができますか?
ありがとうございました。