使用QtScript库解析Json数组例子

本文介绍如何使用QtScript库解析包含数组的JSON数据。通过示例代码展示了如何读取JSON字段并遍历数组元素。

本文转载自:http://blog.sina.com.cn/s/blog_671732440100uwxh.html

使用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代码如下:

 

[cpp]  view plain  copy
  1. #include <QtGui/QApplication>  
  2. #include <QtCore/QString>  
  3. #include <QtCore/QStringList>  
  4. #include <QtScript/QScriptEngine>  
  5. #include <QtScript/QScriptValue>  
  6. #include <QtScript/QScriptValueIterator>  
  7. #include <QtCore/QtDebug>  
  8.   
  9. int main(int argc, char *argv[])  
  10. {  
  11.     QApplication app(argc, argv);  
  12.   
  13.     QString strJson = "{\"department\":\"computer science\", \"person number\":\"45\", \"student\":[{\"Name\":\"ccf\",\"Math\":\"95\", \"Chinese\":\"84\"}, {\"Name\":\"zhangsan\",\"Math\":\"75\", \"Chinese\":\"70\"}]}";  
  14.     QScriptEngine engine;  
  15.     QScriptValue sc =  engine.evaluate("value=" + strJson);  
  16.     qDebug() << "department:" << sc.property("department").toString();//解析字段  
  17.     if (sc.property("student").isArray())   //解析数组  
  18.     {  
  19.         QScriptValueIterator it(sc.property("student"));  
  20.         while(it.hasNext())  
  21.         {  
  22.             it.next();  
  23.             if (!it.value().property("Name").toString().isEmpty())  
  24.             {  
  25.                 qDebug() << "Name :" << it.value().property("Name").toString();  
  26.                 qDebug() << "Math :" << it.value().property("Math").toString();  
  27.                 qDebug() << "Chinese :" << it.value().property("Chinese").toString();  
  28.             }  
  29.         }  
  30.     }  
  31.   
  32.     return app.exec();  
  33. }  

运行结果如下图所示:

   主要用到QtScript库的三个类:QScriptEngine、QScriptValue、QScriptValueIterator类,具体使用方法可以查看QT帮助文档。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值