使用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頁
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幫助文件。