VC++6.0 使用jsoncpp静态库解析json数据(亲测绝对可用)
在网上找教程时看到这个博客,虽然博客中的图片都没了还是很容易看懂,于是我来把图片补齐再加上自己配置jsoncpp时的操作。。。。
jsoncpp这个开源项目的地址是:https://github.com/open-source-parsers/jsoncpp
JSON是什么http://blog.csdn.net/hzyong_c/article/details/7163589
参考了以下的这些文章
http://www.it165.net/pro/html/201404/13024.html
http://www.cppblog.com/wanghaiguang/archive/2013/12/26/205020.aspx
http://blog.csdn.net/guowenyan001/article/details/10378195
在这里尤其感谢这篇博文的作者:
http://www.hack590.com/article-63.hack(可能太久远了,已无法访问)
第一步:VC6.0新建一个如下图所示:
第二步:将下载下来的“jsoncpp-master.zip”解压,如下图所示:
第三步:
a.复制jsoncpp-src-0.5.0目录中的,include/下的json目录到上面(第一步)的工程中,
b.复制jsoncpp-src-0.5.0目录中的src/lib_json中的文件到上面(第一步)的工程中,
(我是把所有文件都一起复制 到项目文件内的)如图:
第四步:
a.在工程中将第三步中的“a”中的文件添加到Header Files中,
b.在工程中将第三步中的“b”中的.cpp文件添加到Source Files中,
c.在工程中将第三步中的“b”中的除.cpp文件外全部添加到Header Files中。
最终的目录结构如下图所示 :
直接添加文件到项目中:
Project-> add file to project
关于上图所说的clear()替换成erase的参考如下 :(这个没图,我也不知道上图说的啥,先不用管,直接下一步。。)
http://wenwen.sogou.com/z/q152374200.htm
http://bbs.csdn.net/topics/360194977
第五步:运行编译,会有如下错误提示:
(我这边运行时正常的,没有错误,如有提示错误的可以问我或者百度。。)
第六步:编译通过后,会在工程相对应下的Debug或Release中出现一个与工程名相同的xxx.lib文件。复制这个文件到需要使用JSON的工程将复制jsoncpp下的include/中的json文件夹到工程目录中,即可使用。:
(直接将jsoncpp-src-0.5.0目录中的,include/下的json文件复制到项目文件中, 然后在对应的吧lib也复制过去就行了)
如何使用jsoncpp网上,有很多的例子,我这里就随便举个例子吧。
#include "stdafx.h"
// 注意此处的路径
#include "json/json.h"
// 注意此处的文件名后缀
#include <string>
#include <iostream>
// 此为jsoncpp的静态库 直接调用
#pragma comment(lib,"Json_lib.lib")
using namespace std;
int main(int argc, char* argv[])
{
std::string strValue = "{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}";
Json::Reader reader;
Json::Value value;
if (reader.parse(strValue, value))
{
std::string out = value["key1"].asString();
std::cout << out << std::endl;
const Json::Value arrayObj = value["array"];
for (int i=0;i<arrayObj.size();i++)
{
out = arrayObj[i]["key2"].asString();
std::cout<<out;
if (i != arrayObj.size() - 1)
{
std::cout << std::endl;
}
}
}
return 0;
}
上面的例子,会有如下一些错误,
第一:(不清楚是什么错误..)
解决此问题的博文
http://zhidao.baidu.com/link?url=c7GRzrRzH3irTRI5ZcZ0dmvzW2gcgEGa91KOu2ticVMloaTND-CuKRhWLlgrClAga0H6jdAHDFSKI7Rd7NrYa_
http://social.msdn.microsoft.com/Forums/vstudio/en-US/5f7eed6d-236a-4cce-952a-b771abc3b9e9/why-cout-is-not-a-member-of-std?forum=vclanguage