VS2010中使用JSONCPP方法
下載jsoncpp後,按ReadMe文檔的說法是要先安裝的,但是安裝比較麻煩。然而事實上,我們並不需要安裝,就可以直接使用。
方法一:直接拷貝源文件。這個方法比較簡單,但不推薦,因為不便於項目管理。
- VS2010裏新建一個空的控製台程序(用作測試jsoncpp是否可用),名為: TestJSON
- 解壓下載好的文件:jsoncpp-src-0.5.0.tar.gz
- 將 jsoncpp-src-0.5.0\include 目錄下的json文件夾拷貝至 TestJSON 工程目錄下
- 將 jsoncpp-src-0.5.0\src\lib_json 目錄下的所有.h, .cpp 文件全部拷貝至 TestJSON 工程目錄下
- 在VS201裏引入工程目錄下剛剛從 jsoncpp-src-0.5.0 導入的文件,如圖1
- 在VS2010裏新建main.cpp來測試jsoncpp是否可用。代碼見文章末尾main.cpp
方法二:使用靜態鏈接庫
- VS2010裏新建一個空的控製台程序(用作測試jsoncpp是否可用),名為: TestJSON
- 解壓下載好的文件:jsoncpp-src-0.5.0.tar.gz
- 利用VS2010打開jsoncpp-src-0.5.0\makefiles\vs71目錄下的jsoncpp.sln,會出現三個Project:jsontest, lib_json, test_lib_json
- 在lib_json上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右側的Runtime Library的內容,如圖2,看完箭頭所指的東西就可以點確定,關掉屬性頁。
- 編譯lib_json,顯示編譯成功後,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json目錄下會生成一個json_vc71_libmtd.lib,將這個lib拷貝至TestJSON工程目錄下。
- 將jsoncpp-src-0.5.0\include\json目錄下的所有.h文件拷貝至TestJSON工程目錄下,並在工程Header Files引入.
- 將方法一裏的main.cpp添加到工程中,並在工程名上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation, 將Runtime Library改成圖2箭頭所示內容。
- 在工程名上 右擊-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies裏填寫json_vc71_libmtd.lib,然後確定,編譯就行了。
圖1:
圖2:
//測試DEMO
#include <iostream> #include <string> #include "json\json.h" int main(void) { std::string strValue="{\"key1\":\"value1\",\"array\":[{\"key2\":\"value2\"},{\"key2\":\"value3\"},{\"key2\":\"value4\"}]}"; Json::Reader reader;//json解析 Json::Value value;//表示一個json格式的對象 if(reader.parse(strValue,value))//解析出json放到json中區 { std::string out=value["key1"].asString(); std::cout<<out<<std::endl; const Json::Value arrayObj=value["array"];//迭代器 for (int i=0; i < arrayObj.size();i++) { out=arrayObj[i]["key2"].asString(); std::cout<<out; if(i!=arrayObj.size()-1) std::cout<<std::endl;; } } getchar(); return 0; }
再來一個源碼
#include <iostream> #include <string> #include "json\json.h" int main(void) { //解析Json的方法 Json::Value root;//表示一個json格式的對象 Json::Value arrayObj; Json::Value item; for(int i=0;i<10;i++) { item["key"]=i; arrayObj.append(item); } root["key1"]="value1"; root["key2"]="value2"; root["array"]=arrayObj; std::string out=root.toStyledString(); std::cout<<out<<std::endl; getchar(); return 0; }
輸出結果分別是:
DEMO1:
value1
value2
value3
value4
DEMO2:
{
"array" : [
{
"key" : 0
},
{
"key" : 1
},
{
"key" : 2
},
{
"key" : 3
},
{
"key" : 4
},
{
"key" : 5
},
{
"key" : 6
},
{
"key" : 7
},
{
"key" : 8
},
{
"key" : 9
}
],
"key1" : "value1",
"key2" : "value2"
}
源碼下載:https://download.csdn.net/detail/opzoonzhuzhengke/3728120
最後更新:2017-04-02 06:52:03