• 使用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

  • 相关阅读:
    【程序15】成绩>=90分用A表示,60-89分用B表示, 60分以下用C表示。
    【程序13】打印出所有的“水仙花数”,运算符和表达式
    cacti安装
    lamp安装
    虚拟机克隆之后网络重启失败
    Linux 标准输入输出、重定向
    /etc/crontab和crontab -e的区别
    nginx安装
    【程序11】有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,问每个月的兔子总数为多少?
    【程序9】输出国际象棋棋盘
  • 原文地址:https://www.cnblogs.com/findumars/p/4886597.html
Copyright © 2020-2023  润新知