1. 下载jsoncpp, 地址:

​http://sourceforge.net/projects/jsoncpp/​



2. 编译jsoncpp:


jsoncpp文件中提供了vs71的工程文件以及makerelease.py文件,用来编译,里面分为jsontest、lib_json、test_lib_json三个工程,按照自己需要的编译。

注意:如果使用VS默认的编译选项MTd或者MT,在使用json_libmtd.lib的时候可能会出现LNK2038错误(我使用的VS2012vc110环境),所以请修改MTD为MDd,MT为MD。


3.lib库添加进VS工程中:


 

3.1 把json.h 等头文件拷到项目文件夹,并INCLUDE到项目中。

 

3.2 右键工程 》 属性 》配置属性 》链接器 》常规 》附加库目录  添加静态库的目录。

 

3.3 右键工程 》 属性 》配置属性 》链接器 》输入 》附加依赖项  添加json_vc71_libmt.lib 。



完成,可以在项目中使用JSONCPP库了。





错误解决:

问题:


..json_value.cpp 

:  fatal  error  C1083:  无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”:  No  such  file  or  directory


方法:修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表



void readJson() {

using namespace std;

std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";



Json::Reader reader;

Json::Value value;



if (reader.parse(strValue, value))

{

std::string out = value["name"].asString();

std::cout << out << std::endl;

const Json::Value arrayObj = value["array"];

for (unsigned int i = 0; i < arrayObj.size(); i++)

{

if (!arrayObj[i].isMember("cpp"))

continue;

out = arrayObj[i]["cpp"].asString();

std::cout << out;

if (i != (arrayObj.size() - 1))

std::cout << std::endl;

}

}

}