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;
}
}
}