本文转载自: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代码如下:

#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帮助文档。

http://blog.csdn.net/ccf19881030/article/details/12527607

使用QtScript库解析Json数组例子的更多相关文章

  1. Jquery解析json数组字符串

    最近在工作中用到了Jquery来解析json字符串,网上解析jquery解析json单个对象的实例不少,但是jquery解析json数组的实例却是不多,下面我举一个简单的例子来跟大家分享与一下,本人水 ...

  2. 如何在 Apache Hive 中解析 Json 数组

    我们都知道,Hive 内部提供了大量的内置函数用于处理各种类型的需求,参见官方文档:Hive Operators and User-Defined Functions (UDFs).我们从这些内置的 ...

  3. 解析json数组

    解析json数组 JSONArray jsonArray = new JSONArray(markingStr); int iSize = jsonArray.length(); for (int i ...

  4. Gson解析Json数组

    需求:从steam官网获取英雄数据,即为Json数据,并导入到本地数据库 Json数据是这样的 { "result": { "heroes": [ { &quo ...

  5. java解析json数组

      java解析json数组 import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; ...

  6. hive中解析json数组

    -- hive中解析json数组 select t1.status ,substr(ss.col,,) as col ,t3.evcId ,t3.evcLicense ,t3.evcAddress , ...

  7. fastjson解析json数组

    1.fastjson解析json数组(直接上代码) import java.util.ArrayList; import java.util.List; import com.alibaba.fast ...

  8. 前端学习之——js解析json数组

    ** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...

  9. C#解析JSON数组

    方式一 第一步:使用前,需下载:Newtonsoft.Json.dll 没有的,请到我百度云盘下载 链接:https://pan.baidu.com/s/1JBkee4qhtW7XOyYFiGOL2Q ...

随机推荐

  1. linux串口驱动分析——发送数据

    一.应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数 ...

  2. Codeforces Round #203 - D. Looking for Owls

    D. Looking for Owls Emperor Palpatine loves owls very much. The emperor has some blueprints with the ...

  3. SRM 600 DIV1

    A 按位讨论,取最小值; B 数据范围不大,首先要确定枚举角度; 状压枚举palindromes的列比较科学; 列确定后,目标就是求获得rcnt行的最小代价: dp[i][cnt]表示扫描到第i行,已 ...

  4. Sublime Text 3配置记录

    G++ /** * 工具->编译系统->新编译系统 */ { "cmd": ["g++", "${file}", "- ...

  5. # MongoDB学习笔记(持续更新)

    启动mongo服务 sodo mongo 显示数据库(显示数据库名称和大小,单位GB) > show dbs admin (empty) local 0.078GB test 0.078GB t ...

  6. sql server 2008 在安装了活动目录以后无法启动服务了

    软件环境: windows server 2008 r2 ms sql server 2008 r2 在安装活动目录以前,数据库是正常运行的. 安装了活动目录以后,数据库启动时就提示无法启动.出错的信 ...

  7. poj 2104 K-th Number - 经典划分树

    Description You are working for Macrohard company in data structures department. After failing your ...

  8. Redmine backlogs 升级

    刚装完1.0.3两天,1.0.4发布了,乘项目还没有开始,赶快升级.升级过程 1.设置环境变量: RAILS_ENV=production export RAILS_ENV 2. 获取最新代码: cd ...

  9. 带搜索功能,支持绑定对象到节点的TreeView辅助类

    特点: 1.支持数叶子节点与对象绑定 2.支持xml导入,且数据类相关的xml可自定义,只和泛型的实现有关 3.支持节点搜索功能,可在树结构上要求只显示部分节点 4.用C#编写,但与平台关联性低,可移 ...

  10. ASP.Net用jQuery ajax实现页面局部刷新

    刚开始的时候使用asp的updatepanel控件实现局部刷新,而且在本地运行正确,但是部署到服务器上就变成整个页面全部刷新了.服务器用的是Windows server2000,本地机子上用的是win ...