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

第五步:运行编译,会有如下错误提示:

(我这边运行时正常的,没有错误,如有提示错误的可以问我或者百度。。)

解决方法参见此博文
http://zhidao.baidu.com/link?url=54DsT9oOSAYPNk2xKVGU0EF34VydL_7yRZ6ekTcHdTm7DusTkW5-ZVgScDegVcZnButK8aw8H7MDyU_t2VRdpa

第六步:编译通过后,会在工程相对应下的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

posted @ 2022-05-10 16:58  一个野指针  阅读(1194)  评论(0编辑  收藏  举报