使用Jsoncpp有2種,將分別做說明。
Jsoncpp下載點
sourceforge:http://sourceforge.net/projects/jsoncpp/
github:https://github.com/open-source-parsers/jsoncpp
方法一:使用靜態程式庫 (.lib) + 標頭檔(.h)
Step 1. 使用VS2010開啟在 jsoncpp-src-0.5.0\makefiles\vs71下 jsoncpp.sln。
Step 2. 確認 Jsoncpp 編譯的 Runtime Library 為 Multi-threaded Debug DLL (/MDd),這個跟後面使用的專案編譯要設定相同的Runtime Library,確認完後執行編譯。
Step 3. 編譯 jsoncpp 後,在 jsoncpp-src-0.5.0\build\vs71\debug\lib_json 產生 json_vc71_libmtd.lib複製到要建立的專案裡。
Step 4. 建立一個名為 TestJSONCPP 專案,將 jsoncpp-src-0.5.0\build\vs71\debug\lib_json\json_vc71_libmtd.lib 與 jsoncpp-src-0.5.0\include\ 路徑下的json資料夾複製到該專案目錄下。
Step 5. 設定 TestJSONCPP 專案編譯條件。
Include Directories: C:\TestJSONCPP。
Runtime Library:Multi-threaded Debug DLL (/MDd)。
Additional Dependencies:..\json_vc71_libmtd.lib。
Step 6. 在專案檔中加入 json/json.h、json/value.h。
Step 7. 輸入以下程式碼,編譯執行。
#include "stdafx.h" #include "TestJSONCPP.h" #include "json/json.h" #include "json/value.h" CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { Json::Value root; Json::Value script; Json::Value noscript; Json::Value language; Json::Value kind; Json::Value noscript_kind; Json::Value interpreter; Json::Value compiler; CString csUrl = "http://white5168.blogspot.tw/"; //第四層 compiler.append("C++"); compiler.append("C#"); noscript_kind["Compiler"] = compiler; interpreter.append("VB.net"); noscript_kind["Interpreter"] = interpreter; //第三層 noscript.append("C++"); noscript.append("C#"); noscript.append("VB.net"); kind["Noscript"] = noscript; //第三層 script.append("Python"); script.append("GAS"); kind["Script"] = script; //第三層 kind["Noscript-kind"] = noscript_kind; //第二層 language["Kind"] = kind; //第二層 language["Count"] = 5; //第一層 root["Language"] = language; root["Url"] = Json::Value(csUrl); root["Name"] = "iinfo資訊交流"; Json::StyledWriter sw; string output = sw.write( root ); CString csLanguage = output.c_str(); printf("%s\n", csLanguage); return 0; }或
#include "stdafx.h" #include "TestJSONCPP.h" #include "json/json.h" #include "json/value.h" CWinApp theApp; using namespace std; using namespace Json; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { Value root; Value script; Value noscript; Value language; Value kind; Value noscript_kind; Value interpreter; Value compiler; CString csUrl = "http://white5168.blogspot.tw/"; //第四層 compiler.append("C++"); compiler.append("C#"); noscript_kind["Compiler"] = compiler; interpreter.append("VB.net"); noscript_kind["Interpreter"] = interpreter; //第三層 noscript.append("C++"); noscript.append("C#"); noscript.append("VB.net"); kind["Noscript"] = noscript; //第三層 script.append("Python"); script.append("GAS"); kind["Script"] = script; //第三層 kind["Noscript-kind"] = noscript_kind; //第二層 language["Kind"] = kind; //第二層 language["Count"] = 5; //第一層 root["Language"] = language; root["Url"] = Value(csUrl); root["Name"] = "iinfo資訊交流"; StyledWriter sw; string output = sw.write( root ); CString csLanguage = output.c_str(); printf("%s\n", csLanguage); return 0; }執行結果:
方法二:使用原始程式檔(.cpp) + .標頭檔(.h)
使用相同程式碼,修改編譯環境條件。
Step 1. 確認 Additional Dependencies 沒有設定任何條件。
Step 2. 將 jsoncpp-src-0.5.0\src\下的 lib_json 資料夾複製到 TestJSONCPP 專案下。
Step 3. 設定 Source Directories 路徑為 C:\TestJSONCPP\lib_json與 設定Include Directories路徑為 C:\TestJSONCPP。
Step 4. 在專案中加入 json_value.cpp、json_writer.cpp。
Step 5. 分別對 json_value.cpp、json_writer.cpp 的 Precompiled Header 編譯條件設定為 Not Using Precompiled Headers。
注意:第5步沒做,後續無法編譯成功,重要!重要!重要!(因為很重要,所以講了3次)。
執行結果:
參考資料