之前用的cJson类来做的json数据相关操作,后来接触到一些项目,知道了Jsoncpp这个开源跨平台库,觉得很不错,就想自己用源码试着写个测试例子
源码下载地址:
New homepage:
https://github.com/open-source-parsers/jsoncpp
Old homepage:
http://jsoncpp.sourceforge.net
方法一:使用Jsoncpp生成的lib文件
解压jsoncpp-master.zip,用VS2008打开\jsoncpp-master\makefiles\vs71下面的jsoncpp.sln,然后直接编译,别人我不知道,我这边报很多错误,说我命名空间的的相关问题,我又不想去一行行的添加命名空间::符号,就试着用VS2010打开jsoncpp-master\makefiles\msvc2010下面的jsoncpp.sln,直接编译,就成功了,我去,这下有点希望了,应该不至于要我一个个加了,然后对比了下VS2008好2010的项目配置,发现,下面那个配置这里禁用语言扩展改成否,编译直接成功了
然后编译运行测试例子,main函数加入测试下面这段代码,基本没什么问题了,其他详细用法,大家就网上找例子吧
注意:用的时候,Jsoncpp的lib工程编译选项要和VS工程中的编译选项保持一致。如lib文件工程编译选项为MT(或MTd),VS工程中也要选择MT(或MTd),否则会出现编译错误问题,debug和release下生成的lib文件名字不同,注意不要看错了,当成一个文件来使用,可用代码下载地址:https://download.csdn.net/download/u010340160/10789526
const char* str = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string upload_id = root["uploadid"].asString(); // 访问节点,upload_id = "UP000000"
int code = root["code"].asInt(); // 访问节点,code = 100
}
方法二:使用Jsoncpp包中的.cpp和.h文件放入项目中用
新建项目之后,将jsoncpp-master\include\json下的json目录直接复制到项目目录下,将jsoncpp-master\src\lib_json下面的json_reader.cpp、json_tool.h、json_value.cpp、json_writer.cpp复制到项目目录下,然后项目解决方案中,直接将json目录下文件全部导入到头文件目录下,或者也可以自己新建一个筛选器,将头文件全部到入当前筛选器,然后将json_reader.cpp、json_tool.h、json_value.cpp、json_writer.cpp也分别到入进来,编译会出些问题,这时候c/c++/常规/附加包含目录,新增一个".\"目录,是为了能不用去将<>的包含改成""include包含,然后预编译头设置为不使用预编译头,即可编译成功了
可用代码下载地址:https://download.csdn.net/download/u010340160/10789535