1. 程式人生 > >JsonCpp開原始碼lib編譯和檔案直接放到專案使用

JsonCpp開原始碼lib編譯和檔案直接放到專案使用

之前用的cJson類來做的json資料相關操作,後來接觸到一些專案,知道了Jsoncpp這個開源跨平臺庫,覺得很不錯,就想自己用原始碼試著寫個測試例子

原始碼下載地址:

New homepage:
https://github.com/open-source-parsers/jsoncpp
Old homepage:
http://jsoncpp.sourceforge.net

方法一:使用Jsoncpp生成的lib檔案

解壓jsoncpp-master.zip,用VS2008開啟\jsoncpp-master\makefiles\vs71下面的jsoncpp.sln,然後直接編譯,別人我不知道,我這邊報很多錯誤,說我名稱空間的的相關問題,我又不想去一行行的新增名稱空間::符號,就試著用VS2010開啟jsoncpp-master\makefiles\msvc2010下面的jsoncpp.sln,直接編譯,就成功了,我去,這下有點希望了,應該不至於要我一個個加了,然後對比了下VS2008好2010的專案配置,發現,下面那個配置這裡禁用語言擴充套件改成否,編譯直接成功了

 

然後編譯執行測試例子,main函式加入測試下面這段程式碼,基本沒什麼問題了,其他詳細用法,大家就網上找例子吧

注意:用的時候,Jsoncpp的lib工程編譯選項要和VS工程中的編譯選項保持一致。如lib檔案工程編譯選項為MT(或MTd),VS工程中也要選擇MT(或MTd),否則會出現編譯錯誤問題,debug和release下生成的lib檔名字不同,注意不要看錯了,當成一個檔案來使用,可用程式碼下載地址:https://download.csdn.net/download/u010340160/10789526

	const char* str = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";  

	Json::Reader reader;  
	Json::Value root;  
	if (reader.parse(str, root))  // reader將Json字串解析到root,root將包含Json裡所有子元素  
	{  
		std::string upload_id = root["uploadid"].asString();  // 訪問節點,upload_id = "UP000000"  
		int code = root["code"].asInt();    // 訪問節點,code = 100 
	}  

  方法二:使用Jsoncpp包中的.cpp和.h檔案放入專案中用

新建專案之後,將jsoncpp-master\include\json下的json目錄直接複製到專案目錄下,將jsoncpp-master\src\lib_json下面的json_reader.cpp、json_tool.h、json_value.cpp、json_writer.cpp複製到專案目錄下,然後專案解決方案中,直接將json目錄下檔案全部匯入到標頭檔案目錄下,或者也可以自己新建一個篩選器,將標頭檔案全部到入當前篩選器,然後將json_reader.cpp、json_tool.h、json_value.cpp、json_writer.cpp也分別到入進來,編譯會出些問題,這時候c/c++/常規/附加包含目錄,新增一個".\"目錄,是為了能不用去將<>的包含改成""include包含,然後預編譯頭設定為不使用預編譯頭,即可編譯成功了

可用程式碼下載地址:https://download.csdn.net/download/u010340160/10789535