2012-02-06 10 views
1

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" 
-------------- 

私はここで間違って何を指摘することができますか?

ありがとうございました。

答えて

関連する問題