使用QtScript库解析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代码如下:

#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

时间: 2024-10-23 04:03:52

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

Jquery解析json数组字符串

转载:http://www.cnblogs.com/codezyc/p/3235916.html 最近在工作中用到了Jquery来解析json字符串,网上解析jquery解析json单个对象的实例不少,但是jquery解析json数组的实例却是不多,下面我举一个简单的例子来跟大家分享与一下,本人水平有限,还希望各位批评指教. 一个json对象数组的json字符串: 1 2 var str=[{"Price":12,"Name":"aaa",&qu

解析json数组

JSONArray jsonArray = new JSONArray(markingStr); int iSize = jsonArray.length(); for (int i = 0; i < iSize; i++) { org.json.JSONObject jsonObj = jsonArray.getJSONObject(i); String questionsId= jsonObj.get("questionsId").toString().trim(); Str

嵌套的for循环执行顺序。可以让内外for循环交替执行。简单解析json数组。求js中两个时间差值。

1.刚接到不久的工作任务,其中包含一个解析json数组,然后让解析后的数据显示在用zrender画出来的矩形上.效果如下所示(注:没有实际意义) 2.至于zrender等空闲了一定写上使用心得,东西很强大. 3.中间有一项是算计相邻的两个时间的时间差(所有这些时间都是在一个数组里),如图所示,算计相邻两个矩形上时间的差值.延伸一下可以是算一个数组里相邻两个数字的差值. 贴上我的代码 :  for (var m = 0; m < dataObj.length - 1; m++) {        

Gson解析Json数组

需求:从steam官网获取英雄数据,即为Json数据,并导入到本地数据库 Json数据是这样的 { "result": { "heroes": [ { "name": "npc_dota_hero_antimage", "id": 1, "localized_name": "Anti-Mage" }, { "name": "npc_dot

使用Gson解析Json数组遇到的泛型类型擦除问题解决方法

谷歌Gson转换Json串有如下方法: public Object fromJson(String json, Type typeOfT); 可以使用它进行数组解析.如下,使用此方法解析Json串为类型MyBean的List数组,方法可用. List<MyBean> lst = new Gson().fromJson(data, new TypeToken<List<MyBean>>(){}.getType()); 但如果把MyBean改为泛型T,封装此方法为如下: L

解析Json字符串跟解析Json数组

解析Json字符串我这边是使用了JObject的方法 需要引用一个类库 需要下载Newtonsoft.Json.rar dll 然后引用 using Newtonsoft.Json;using Newtonsoft.Json.Linq; 第一个为解析字符串格式的Json 1 JObject jo = (JObject)JsonConvert.DeserializeObject(result);//result为要解析的字符串 2 string errcode = jo["errcode"

毕设三 spark与phoenix集成插入数据/解析json数组

需求:将前些日子采集的评论存储到hbase中 思路: 先用fastjson解析评论,然后构造rdd,最后使用spark与phoenix交互,把数据存储到hbase中 部分数据: 1 [ 2 { 3 "referenceName": "Apple iPhone XR 64GB 黑色 移动联通电信4G全网通手机 双卡双待", 4 "creationTime": "2019-04-08 01:13:42", 5 "cont

微信小程序踩坑日记4——真机端解析json数组和开发平台不一样

0. 引言 环境:访问服务器端php,获取json数组,并渲染在前台 问题描述:保证在开发平台上的正常运行,但是在真机端却出现了无法正确解析wx.request()返回的数据(特指无法解析res.data的json数组) 1. 解决方案 保证在开发平台的正确解析 问题自然而然引向了对string和json之间的转换问题,这里得益于这篇网友的博文. 但是,res.data在开发平台上显示的是object,而在真机端却显示的string,所以我们需要先判断开发平台,在转换类型. // 查看平台 wx

解析json数组——TypeToken

导包import com.google.gson.reflect.TypeToken; //获取数据 String st=NetWork.geturl(URL); //解析数据 Gson gson=new Gson(); //typetoken解析数组 Type type=new TypeToken<List<GoodVo包>>(){}.getType(); List<Good> list = gson.fromJson(st,type);