最近需要在Qt MINGW 下解析json,查了一下jsoncpp这个库很合适,所以下载了这个第三方库。自己编译费了点劲,记录一下编译过程。
本人对编译不太懂,有什么不对的希望指出。
现在这个库已经移到github上,目前最新的版本是1.6.5 ,附上下载地址
https://github.com/open-source-parsers/jsoncpp/tree/1.6.5
下载后解压,我的解压到 E:\DOWNLOAD\jsoncpp-1.6.5
进去发现有个README.md 里面有介绍怎么使用
推荐的方式是将 两个头文件 和 一个cpp 文件加到你的工程中,
那么是哪两个头文件和cpp文件呢 下面帮助里写着用
python amalgamate.py
生成两个头文件和一个源文件 ,所以需要安装Python,这里不详说了
打开cmd(最好是以管理员身份运行),进到解压后的有README.md这一层,
接着执行python amalgamate.py
如图,生成了dist/json/json.h dist/json/json-forward.h dist/jsoncpp.cpp
应该就是这三个文件。
接下来测试这三个文件能不能用。
在Qt Creator里新建一个工程,test
然后在工程里新建一个文件夹json ,将刚生成的三个文件都复制到这个新建的文件夹下,
然后右键点击项目,添加现有文件
进到json文件夹,将这三个文件都选上,
然后 ,就变成这样 , 你的.pro也多了两句
从网上找个栗子 试试看。
#include
#include "json/json.h"
using namespace std;
int main()
{
string strValue = "{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}";
Json::Reader reader;
Json::Value value;
if (reader.parse(strValue, value))
{
string out = value["key1"].asString();
cout << out << endl;
const Json::Value arrayObj = value["array"];
for (int i=0; i
好了,完成。
最后有点问题,因为需要mingw ,所以按照README.me 使用scons platform=mingw 生成了 一个 libjson_mingw_libmt.a文件
本想通过 在.pro 里引用INCLUDEPATH 和 LIBS方法使用jsoncpp , 却总不成功,最后又看README.md 用了推荐的方法。
如果我这个方法有问题,希望知道的朋友告诉我。