当前位置: 首页 > 工具软件 > Qjson > 使用案例 >

QJson应用

宋臻
2023-12-01

在使用前,需要配置使用环境。

1、在本地编译出QJson的dll(见前一篇文章)。

2、在.pro文件中加入如下代码:

INCLUDEPATH += d:/Qt/2010.05/lib/qjson/include

LIBS += -Ld:/Qt/2010.05/lib/qjson/lib -lqjson

环境就配好了。

 

接下来是在代码中使用定义的类,简而言之,几个步骤:

1、定义Parser:

QJson::Parser*parser=newQJson::Parser();

2、转化字符串query为Qvariant

bool ok;//返回结果是否转化成功

QString query = "XXX";//待转化字符串

QVariant result = parser->parse(query.toAscii(),&ok);

3、获取值,如果是数组(用“[]”括起来的),则用toList转化到QVariantList或QList<QVariant>,如果是类(用"{}"括起来的),则用toMap()转化到QVariantMap或QMap<QString,QVariant>,基本变量值可以用toString(), toInt()等方法获得。此外,在头文件中,还见到了Hash的定义:typedef QHash<QString,QVariant> QVariantHash;以后再慢慢尝试。

有了上面的方法,就可以分析Json中的数据了。还算挺好用的。

-------------------------------------------------------------------

附上两段测试代码

*************************************************

QString query = "{\"dxydata\":{\"class\":\"Data\",\"id\":null,\"sex\":\"male\",\"name\":\"dxy\",\"age\":13},\"test\":\"123\"}";
QVariant result = parser->parse(query.toAscii(), &ok);
QVariantMap mymap = result.toMap();
QVariantMap datamap = mymap["dxydata"].toMap();
qDebug() << datamap["class"].toString() << datamap["sex"].toString();
qDebug() << mymap["test"].toInt();


-------------------------------------------------------------------

QString query = "[{\"rid\":\"102432\", \"pid\":\"1000\", \"username\":\"dxy\"}, {\"rid\":\"000\", \"pid\":\"10200\", \"username\":\"dxy2\"}]";
QVariantList mylist = result.toList();
foreach (QVariant plugin, mylist) {
    QVariantMap mymap = plugin.toMap();
    qDebug() << "[" << mymap["rid"].toString() << mymap["pid"].toString() << mymap["username"].toString() << "]";
}


 类似资料: