VC下使用JSONCPP(json)
阿新 • • 發佈:2019-02-12
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: 程式碼生成失敗
修改生成靜態庫檔案的工程的屬性:路徑為:選單---專案--屬性---配置屬性---c/c++---輸出檔案---彙編程式輸出:無列表