下载jsoncpp后,按ReadMe文档的说法是要先安装的,但是安装比较麻烦。然而事实上,我们并不需要安装,就可以直接使用。
方法一:直接拷贝源文件。这个方法比较简单,但不推荐,因为不便于项目管理。
- VS2010里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON
- 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz
- 将 jsoncpp-src-0.5.0\include 目录下的json文件夹拷贝至 TestJSON 工程目录下
- 将
jsoncpp-src-0.5.0\src\lib_json 目录下的所有.h, .cpp 文件全部拷贝至 TestJSON 工程目录下 - 在VS201里引入工程目录下刚刚从
jsoncpp-src-0.5.0 导入的文件,如图1 - 在VS2010里新建main.cpp来测试jsoncpp是否可用。代码见文章末尾main.cpp
方法二:使用静态链接库
- VS2010里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON
- 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz
- 利用VS2010打开jsoncpp-src-0.5.0\makefiles\vs71目录下的jsoncpp.sln,会出现三个Project:jsontest,
lib_json, test_lib_json - 在 lib_json上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右侧的Runtime Library的内容,如图2,看完箭头所指的东西就可以点确定,关掉属性页。
- 编译lib_json,显示编译成功后,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝至TestJSON工程目录下。
- 将jsoncpp-src-0.5.0\include\json目录下的所有.h文件拷贝至TestJSON工程目录下,并在工程Header Files引入.
- 将 方法一里的main.cpp添加到工程中,并在工程名上 右击-->Properties-->Configuration Properties-->C/C++-->Code Generation, 将Runtime Library改成图2箭头所示内容。
- 在 工程名上
右击-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies里填写json_vc71_libmtd.lib,然后确定,编译就行了。
图1:
图2:
//测试DEMO
- #include
<iostream> - #include
<string> - #include
"json\json.h" -
- int
main(void) - {
-
std::string strValue="{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}"; -
Json::Reader reader;//json解析 -
Json::Value value;//表示一个json格式的对象 -
-
if(reader.parse(strValue,value))//解析出json放到json中区 -
{ -
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;; -
} -
} -
-
getchar(); -
return 0; - }
再来一个源码
- #include
<iostream> - #include
<string> - #include
"json\json.h" -
- int
main(void) - {
-
//解析Json的方法 -
Json::Value root;//表示一个json格式的对象 -
Json::Value arrayObj; -
Json::Value item; -
-
for(int i=0;i<10;i++) -
{ -
item["key"]=i; -
arrayObj.append(item); -
} -
root["key1"]="value1"; -
root["key2"]="value2"; -
root["array"]=arrayObj; -
-
std::string out=root.toStyledString(); -
std::cout<<out<<std::endl; -
-
-
-
getchar(); -
return 0; - }
输出结果分别是:
DEMO1:
value1
value2
value3
value4
DEMO2:
{
}
源码下载:http://download.csdn.net/detail/opzoonzhuzhengke/3728120