现在的位置: 首页 > 综合 > 正文

Qt自带json解析器————未了情

2013年01月19日 ⁄ 综合 ⁄ 共 1196字 ⁄ 字号 评论关闭

c++的jsoncpp自己是用的比较顺手了,可是发现新的方法,当然也愿意去尝试尝试。

但是到后面发现跟当初用boost的ptree情景一样,都卡在了不懂怎么进去访问第二级,而告败。现在贴出来,希望高手指点。 

#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里面的值,但是不知道怎么得到。。。。哥郁闷了。。。

抱歉!评论已关闭.