Qtはjson解析器を持っています--未了情

2211 ワード

c++のjsoncpp自体は使い勝手がいいですが、新しい方法を発見したら、もちろん試してみたいです.
しかし後になると当初boostを使っていたptreeの光景と同じように、どうやって第2級を訪問するか分からず、敗れた.今貼って、達人が指摘することを望みます. 
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtScript/QScriptEngine>
#include <QtScript/QScriptValueIterator>
#include <QtDebug>
#include <QtScript/QScriptValue>
#include "json/json.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
//    char *ss;
    QString ss ="{\"type\":\"HardwareConfig\",\"cont\":\"AddFixing\",\"address\":\"0-0-4-1\",\"fixingtype\":\"PDM_LH_PDM16_08\",\"childrens\":[{\"address\":\"0-0-4-1-0\",\"type\":\"WSD50\",\"id\":\"WSD00011\",\"parameter\":0}]}";

    QScriptValue sc;
    QScriptEngine engine;
    sc = engine.evaluate("value = " + ss);

    QScriptValueIterator it(sc);
    while (it.hasNext())
    {
        it.next();
        if(it.name()=="type")
        {
            it.setValue("good");
            qDebug() <<it.value().toString();
        }
        else
        {
            qDebug() << it.name() << ": " << it.value().toString();
        }
    }
    
    
    //    Json::Reader reader;
    //    Json::Value json_reader;

    //    if(!reader.parse(ss, json_reader))
    //    {

    //        return -1;
    //    }
    //    int i=0;
    //    qDebug() << json_reader["childrens"][i]["address"].asCString();
    
    return a.exec();
}

プログラムの実行結果は次のとおりです.
"good" "cont":  "AddFixing" "address":  "0-0-4-1" "fixingtype":  "PDM_LH_PDM16_08" "childrens":  "[object Object]"
 
childrensの中の値を手に入れたいのですが、どうやって手に入れるか分かりません...兄は気がふさいだ...