Jsoncpp
下載源代碼,設置環境如下,這個環境要和調用jsoncpp的應用程序的環境相同,debug和relese不同,要修改,關於release,文章最後有說明
測試代碼如下:拷貝json.的頭文件和庫文件到當前項目工程目錄下
// demo2.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#pragma comment(lib,"json_vc71_libmtd.lib")
#include "json/json.h"
int _tmain(int argc, _TCHAR* argv[])
{
Json::Value root;
Json::Value person;
person["name"]="hello world";
person["age"]=12;
root.append(person);
person["name"]="json";
person["age"]=13;
root.append(person);
std::string name;
int age;
int size=root.size();
for (int i=0;i<size;i++)
{
name=root[i]["name"].asString();
age=root[i]["age"].asInt();
std::cout<<name<<" "<<age<<std::endl;
}
Json::FastWriter fw;
std::cout<<fw.write(root)<<std::endl;
std::string msg=fw.write(root);
//反序列化
Json ::Reader freader;
Json::Value rootr;
freader.parse(msg,rootr);
for (int i=0;i<size;i++)
{
name=root[i]["name"].asString();
age=root[i]["age"].asInt();
std::cout<<name<<" "<<age<<std::endl;
}
//獲取key,只有root[0],root[1]中的元素纔有key
Json::Value::Members members(root[1].getMemberNames());
for (Json::Value::Members::iterator it = members.begin(); it != members.end(); ++it)
{
const std::string &key = *it;
const std::string valueTemp=root[i][key].asString();
std::cout<<key<<std::endl;
}
//Ctrl+F5 編譯運行
return 0;
}
另外,在release版本中,如果出現如下錯誤
1>正在生成代碼
1>e:\Source\VC\Զ\json\jsoncpp-src-0.6.0-rc2\src\lib_json\json_value.cpp : fatal error C1083: 無法打開編譯器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: No such file or directory
1>LINK : fatal error LNK1257: 代碼生成失敗
請參考http://bbs.csdn.net/topics/380043500
修改生成靜態庫文件的工程的屬性:路徑爲:菜單---項目--屬性---配置屬性---c/c++---輸出文件---彙編程序輸出:無列表