日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsoncpp之初体验

發(fā)布時(shí)間:2023/12/9 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsoncpp之初体验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考文章?http://blog.csdn.net/JoeBlackzqq/article/details/9043315?, 我將里面的代碼做在了一個(gè)工程親自體驗(yàn)了下。


1. 下載jsoncpp源碼, 地址:?http://nchc.dl.sourceforge.net/project/jsoncpp/jsoncpp/0.5.0/jsoncpp-src-0.5.0.tar.gz

2. 編譯json,生成靜態(tài)lib文件

源碼解壓后,結(jié)構(gòu)如下:



我的jsoncpp解壓后存放目錄為:D:\Desktop\jsoncpp-src-0.5.0, 打開其中的D:\Desktop\jsoncpp-src-0.5.0\makefiles\vs71\jsoncpp.sln,因?yàn)槲蚁到y(tǒng)上裝的是vc2010,所以會(huì)出現(xiàn)版本轉(zhuǎn)換窗口,按默認(rèn)即可!

修改工程屬性如下:




編譯,應(yīng)該會(huì)生成lib_json.lib文件,至此,靜態(tài)庫就生成了!


3. 新建win32控制臺(tái)工程json_app1, 添加代碼(m.cpp):

/*jsoncpp初體驗(yàn), jsoncpp源代碼下載地址:http://nchc.dl.sourceforge.net/project/jsoncpp/jsoncpp/0.5.0/jsoncpp-src-0.5.0.tar.gz環(huán)境: vc2010下編譯出來的json.lib編譯json.lib前,需設(shè)置工程屬性: Release: 配置屬性 -> C/C++ -> 代碼生成: 運(yùn)行庫="多線程 DLL (/MD)"Debug: 配置屬性 -> C/C++ -> 代碼生成: 運(yùn)行庫=多線程調(diào)試 DLL (/MDd)" json_app1的屬性設(shè)置要與調(diào)用的json.lib的工程屬性一致,否則會(huì)出錯(cuò)的! */#include <stdio.h> #include <iostream> #include <json.h>using namespace std; using namespace Json;void test_Json_FastWriter(Value &root) {FastWriter fastwriter;cout << fastwriter.write(root) << endl; }void test_Json_StyledWriter(Value &root) {StyledWriter styled_writer;cout << styled_writer.write(root) << endl; }bool test_Json_Reader() {Reader reader;Value json_object;const char* jsonString = "{\"age\" : 26, \"name\" : \"huchao\"}";if (!reader.parse(jsonString, json_object))return false;// 錯(cuò)誤的輸出方式cout << json_object["name"]; // cout的運(yùn)行算符"<<"并沒有對Json::Value類型的重載,所以這種使用方式得到的結(jié)果并不可靠cout << json_object["age"]; // 這種輸出方式會(huì)自動(dòng)在輸出內(nèi)容后換行cout << json_object["name"] << json_object["age"]; // 錯(cuò)誤的輸出方式,因?yàn)闀?huì)自動(dòng)在輸出一個(gè)Json::Value對象后自動(dòng)換行,與預(yù)期的不一樣吧!cout << "-----------------------------------------------------" << endl;// 正確的輸出方式cout << json_object["name"].asCString() << endl; // 這才是正確的輸出方式cout << json_object["age"].asInt() << endl;cout << json_object["name"].asCString() << ", " << json_object["age"].asInt() << endl;// printf("name=[%s], age=[%d]\n", json_object["name"], json_object["age"]); // 錯(cuò)誤的輸出方式, 因?yàn)閖son_object["xx"]是一個(gè)Json::Value類型printf("name=[%s], age=[%d]\n", json_object["name"].asCString(), json_object["age"].asInt()); // 正確的輸出方式return true; }int main() {Value json_temp; // 臨時(shí)對象,供如下代碼使用json_temp["name"] = Value("huchao");json_temp["age"] = Value(26);Value root; // 表示整個(gè) json 對象root["key_string"] = Value("value_string"); // 新建一個(gè) Key(名為:key_string),賦予字符串值:"value_string"。root["key_number"] = Value(12345); // 新建一個(gè) Key(名為:key_number),賦予數(shù)值:12345。root["key_boolean"] = Value(false); // 新建一個(gè) Key(名為:key_boolean),賦予bool值:false。root["key_double"] = Value(12.345); // 新建一個(gè) Key(名為:key_double),賦予 double 值:12.345。root["key_object"] = json_temp; // 新建一個(gè) Key(名為:key_object),賦予 json::Value 對象值。root["key_array"].append("array_string"); // 新建一個(gè) Key(名為:key_array),類型為數(shù)組,對第一個(gè)元素賦值為字符串:"array_string"。root["key_array"].append(1234); // 為數(shù)組 key_array 賦值,對第二個(gè)元素賦值為:1234。ValueType type = root.type(); // 獲得 root 的類型,此處為objectValue 類型test_Json_FastWriter(root);test_Json_StyledWriter(root);test_Json_Reader();return 0; }/* 運(yùn)行情況: {"key_array":["array_string",1234],"key_boolean":false,"key_double":12.3450,"key_number":12345,"key_object":{"age":26,"name":"huchao"},"key_string":"v alue_string"}{ "key_array" : [ "array_string", 1234 ], "key_boolean" : false, "key_double" : 12.3450, "key_number" : 12345, "key_object" : { "age" : 26, "name" : "huchao" }, "key_string" : "value_string" }"huchao" // 自動(dòng)換行了,不符合預(yù)期 26 "huchao" 26 ----------------------------------------------------- huchao // 手工換行,符合預(yù)期 26 huchao, 26 name=[huchao], age=[26]*/


將json的頭文件和剛才生成的lib庫添加一下(略),生成m.exe,運(yùn)行即可看到結(jié)果!

下面是我的json_app1的屬性配置:



總結(jié)

以上是生活随笔為你收集整理的jsoncpp之初体验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。