qtcreator 怎么用delphi qjson的使用库

Q字母的DLL文件下载 - 脚本之家
Q字母DLL文件列表6048人阅读
项目中用到要解析json格式的数据。特地总结了一下Qt中解析json的方法如下:
1、使用Qt中QScript类函数自己解析。(工作量太大)
&&&&&& 请参考文章:
&&&&&&&&&&&&&&&&&&&&&&&&&&& &&
2、使用最新版的Qt5版本,Qt5以上版本添加好多关于JavaScript的内容,其中就有关于解析json格式数据的函数。
&&&&& 此方法简单,但因为楼主用的是Qt4.8版本,同时对于Qt5新版本的稳定性不太确定,所以也没用。等到Qt5稳定后可以考虑。
&&&&& 部分代码如下:
void MainWindow::replyFinished(QNetworkReply* replay)
if(replay-&error() == QNetworkReply::NoError)
QByteArray data = replay-&readAll();
QJsonParseError jsonE//Qt5新类
QJsonDocument json = QJsonDocument::fromJson(data, &jsonError);//Qt5新类
if(jsonError.error == QJsonParseError::NoError)//Qt5新类
if(json.isObject())
QJsonObject obj = json.object();//Qt5新类
if(obj.contains(&weatherinfo&))
if(obj[&weatherinfo&].isObject())
QJsonObject weatherObj = obj[&weatherinfo&].toObject();
weatherMap = weatherObj.toVariantMap();
//qDebug() && weatherM
showWeather();
3、使用外部库QJson。
&&& 本篇着重介绍QJson的使用方法,网上的一些使用方法不全面,光是QJson编译就让人抓狂,楼主找到了一篇全面详细的介绍。
& 楼主整理了源代码文件,网址:
& 使用Qt 编译方法:
& 源代码文件是不包含的QJSon.pro工程文件的,因此我们可以手动创建一个QJSon.pro文件(可以新建txt文件将后缀改为.pro即可,使用txt文档打开QJSon.pro文件。
&在文件中加入如下工程代码:
TEMPLATE = lib
DEPENDPATH += .
INCLUDEPATH += .
include(./json.pri)
LIBS += -lws2_32
&启动QtCreator,打开上面的工程,即打开QJSon.pro后,将版本改为发布版本,请选择启动编译的“发布”选项:
设置完成之后,既可以选择“运行”。如果出现如下情况,点取消,不用管它。
运行完成,在release文件夹下,会有libqjson.a和QJson.dll文件,这两个就是要用到的最关键的文件。如下图
楼主也把他们打包放在链接:
可以直接下载下来用。(注意环境:win7下Qt Creator环境)
将release文件夹里面的libQJSon.a放到&Qt&dir&\lib&目录中,例如本人将它放在了:D:\QtSDK\Desktop\Qt\4.8.1\lib&目录中,
再在release文件夹里面找到QJSon.dll文件,将它放到&Qt&dir&\bin目录中,本人放在了:D:\QtSDK\Desktop\Qt\4.8.1\bin目录中。
接下来,创建一个名为QJSon的文件夹,然后将之前的代码目录中的所有头文件(*.h和*.hh)都拷贝到新创建的QJSon的文件夹中,将QJson文件夹放到
D:\QtSDK\Desktop\Qt\4.8.1\include目录中。
接下来,就是测试QJson的使用。这方面文章很多,可以自行搜索,
给出几个参考网址:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49982次
排名:千里之外
原创:22篇
转载:36篇
评论:30条
(1)(1)(1)(1)(3)(2)(2)(11)(21)(12)(2)(1)1839人阅读
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式; 可以将数据以name/value的形式任意组合;
QJson 是一个基于Qt的库, 将JSON的数据map成name-QVariant的形式, 或者进行反相转换; 通过Q_PROPERTY还可以转换QObject类中的数据;
QJSON Source&&(需要编译lib来link)
Build&测试时在Windows下进行, 所以我尝试用IDE的方式编译:&
1. 用QtCreator打开CMakeList.txt, 进行C&
2. 生成了qjson项目, Build All&
Note&这里有个error, '_strtoui64' was not declared in this scope, 是作者在修VS2012的bug时introduce的, 只要找到json_scanner.cc, 把strtoll和strtoull两个宏注释掉就行;
3. 在Qt项目中引入QJSN的library, QJSON对QtCore有dependency. &e.g.&LIBS&+=&-L&PathToQJSONLib&&-l&qjson&
Note&注意环境变量中的各种Qt版本, QJSON中的CMake会自动搜索任意的Qt Binary, 需要手动设置Qt路径, 否则会出现库版本不一致的问题;&
e.g. 格式: String必须用&& 包括起来, 使用&\&来转义字符;
query(&{\&name\&:\&newName\&,\&size\&:\&Godzilla\&,
\&price\&:111.222}&);
&&&&QByteArray
json = query.toUtf8();
&&&&QJson::Parser
&&&&QVariantMap
result = parser.parse (json, &ok).toMap();
&&&&if&(ok)
&&&&&&&&QHash&int,
QByteArray& roleNames = item-&roleNames();
&&&&&&&&QHash&int,
QByteArray&::
&&&&&&&&for&(iter
= roleNames.begin(); iter != roleNames.end(); ++iter)
&&&&&&&&&&&&if&(result.value(iter.value()).isValid())
&&&&&&&&&&&&&&&&item-&setData(iter.key(),
result.value(iter.value()));
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&cout&&&no
&&&&&&&&&&&&cout&&(int)(iter.key())&&&&&&&iter.value().data()&&
&&&&&&&&&&&&cout&&(result.value(iter.value())).toString().toUtf8().data()&&
&&&&&&&&Q_ASSERT(&An
error occurred during parsing&);
&对于list的数据:&
{\&id\&:\&Banana\&, \&name\&:\&111\&,\&size\&:\&Godzilla\&, \&price\&:111.222}, {\&id\&: \&Grape\&, \&name\&:222,\&size\&:\&GodzillA\&, \&price\&:33333} ]&);&
&&&&QVariant
data = parser.parse (json, &ok);
&&&&if&(ok)
&&&&&&&&QVariantList
list = data.toList();
&&&&&&&&for&(int&i
= 0; i & list.size(); i++)
&&&&&&&&&&&&QVariantMap
listData = list.at(i).toMap();
&&&&&&&&&&&&ListItem*
item = GetListModel()-&find(listData[&id&].toString());
&&&&&&&&&&&&if&(item
&&&&&&&&&&&&&&&&
Qt使用JSON:&
Lighter version: qt-json:&&(需要将文件加入Project)
XML(eXtensible Markup Language) 可扩展标记语言;
Qt中读取XML数据的方式好像有不少, 测试了一个节点方式的:
QDomDocument&代表一个XML文件, 一个文件树的root节点; &setContent()把XML文档从字节数组转化成内容设给DOMDoc.
QDomNode&DOM Tree的基类;&QDomElement&代表DOM
tree上的一个元素;
XML: Dictionary.xml
&?xml&version=&1.0&&encoding=&Unicode-1-1-utf-8&?&
&localeName&English_United_States&/localeName&
&string&id=&101&&text=&Phone&/&
&string&id=&100&&text=&Name&/&
&string&id=&99&&text=&Address&/&
&/strings&
Function: XMLParse
typedef&QMap
QString& MY_MAP;
bool&XMLparse(QString&
locName, MY_MAP& map)
&&&&QDomDocument
file(&R:\\Projects\\Data.xml&);
&&&&if&(!file.open(QIODevice::ReadOnly))
&&&&&&&&return&false;
&&&&if&(!doc.setContent(&file))
&&&&&&&&file.close();
&&&&&&&&return&false;
&&&&file.close();
&&&&QDomElement
docElem = doc.documentElement();
&&&&QDomNode
n = docElem.firstChild();
&&&&if&(n.isNull())
&&&&&&&&return&false;
&&&&while(!n.isNull())
&&&&&&&&QDomElement
e = n.toElement();
&&&&&&&&if(!e.isNull())
&&&&&&&&&&&&if&(e.tagName().compare(&localeName&)
&&&&&&&&&&&&&&&&locName
= e.text();
&&&&&&&&&&&&if&(e.tagName().compare(&string&)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&bool&
&&&&&&&&&&&&&&&&int&id
= e.attribute(&id&).toInt(&ok);
&&&&&&&&&&&&&&&&Q_ASSERT(ok);
&&&&&&&&&&&&&&&&if&(!map.contains(id))
&&&&&&&&&&&&&&&&&&&&map.insert(id,
e.attribute(&text&));
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
= n.nextSibling();
&&&&return&true;
PHRASE_MAP
= XMLparse(locName, map);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:126211次
积分:2681
积分:2681
排名:第10041名
原创:115篇
转载:28篇
译文:21篇
评论:11条
(10)(8)(1)(2)(2)(1)(2)(1)(1)(5)(4)(1)(6)(2)(4)(1)(2)(2)(6)(9)(15)(10)(6)(6)(6)(5)(11)(2)(1)(2)(1)(1)(1)(2)(7)(17)Qt | Cross-platform software development for embedded & desktop
Qt licensing explained
IoT whitepaper
October 19, 2016
October 4, 2016
August 9, 2016

我要回帖

更多关于 qjson0.dll下载 的文章

 

随机推荐