1. 程式人生 > >使用QtScript庫解析Json陣列例子

使用QtScript庫解析Json陣列例子

使用qtscipt庫解析json陣列
首先在工程檔案中加

QT        += script

然後標頭檔案加

#include <QtScript>

然後解析

QString str = "{\"name\":\"xiaotang\", \"age\":\"23\", \"chi\":[{\"a\":\"aa\", \"b\":\"bb\"}, {\"a\":\"aaa\", \"b\":\"bbb\"}]}";

QScriptEngine engine;

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

qDebug() << sc.property("name").toString(); //解析欄位

if(sc.property("chi").isArray()) //解析陣列

{

QScriptValueIterator it(sc.property("chi"));

        while (it.hasNext())

        {

            it.next();

            if(!it.value().property("a").toString().isEmpty())

                qDebug() << it.value().property("a").toString();

        }

}

    自己在Win7環境下安裝了Qt4.8.5庫qt-win-opensource-4.8.5-vs2008.exe和QtCreator編輯器qt-creator-windows-opensource-2.8.0.exe,採用VS2008替代MinGW作為編譯器。如果想在VS2008下部署和開發QT應用的話,再從QT官網下載一個外掛qt-vs-addin-1.1.11-opensource.exe就OK了,不過VS2008對QT庫的函式自動提示支援等方面沒有QTCreator做得好。以上的軟體都可以從QT官網Download頁

http://qt-project.org/downloads下載。

 QT程式碼如下:

#include <QtGui/QApplication>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtScript/QScriptEngine>
#include <QtScript/QScriptValue>
#include <QtScript/QScriptValueIterator>
#include <QtCore/QtDebug>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QString strJson = "{\"department\":\"computer science\", \"person number\":\"45\", \"student\":[{\"Name\":\"ccf\",\"Math\":\"95\", \"Chinese\":\"84\"}, {\"Name\":\"zhangsan\",\"Math\":\"75\", \"Chinese\":\"70\"}]}";
    QScriptEngine engine;
    QScriptValue sc =  engine.evaluate("value=" + strJson);
    qDebug() << "department:" << sc.property("department").toString();//解析欄位
    if (sc.property("student").isArray())   //解析陣列
    {
        QScriptValueIterator it(sc.property("student"));
        while(it.hasNext())
        {
            it.next();
            if (!it.value().property("Name").toString().isEmpty())
            {
                qDebug() << "Name :" << it.value().property("Name").toString();
                qDebug() << "Math :" << it.value().property("Math").toString();
                qDebug() << "Chinese :" << it.value().property("Chinese").toString();
            }
        }
    }

    return app.exec();
}

執行結果如下圖所示:

   主要用到QtScript庫的三個類:QScriptEngine、QScriptValue、QScriptValueIterator類,具體使用方法可以檢視QT幫助文件。