下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、vc下jsoncpp的使用入門一、摘要json 的全稱為:javascript object notation,顧名思義,json 是用于標(biāo)記 javascript 對(duì)象的,json 官方的解釋為:json 是一種輕量級(jí)的數(shù)據(jù)傳輸格式。本文并不詳細(xì)介紹 json 本身的細(xì)節(jié),旨在討論如何使用 c+ 語(yǔ)言來(lái)處理 json。關(guān)于 json 更具體的信息,可參見 json 官網(wǎng):。二、jsoncpp 在 windows 下的編譯要使用第三方源碼庫(kù),第一步少不了的就是編譯,將源碼文件編譯成我們方便使用的動(dòng)態(tài)鏈接庫(kù)、靜態(tài)鏈接庫(kù)或者靜態(tài)導(dǎo)入庫(kù)1。jsconcpp 進(jìn)行
2、json 解析的源碼文件分布在 include/json、src/lib_json 下。其實(shí) jsoncpp 源碼并不多,為了方便產(chǎn)品管理,此處沒必要將其編譯為動(dòng)態(tài)鏈接庫(kù)或者靜態(tài)導(dǎo)入庫(kù),所以我們選擇使用靜態(tài)鏈接庫(kù)2。jsoncpp 已經(jīng)處理的很完善了,所有編譯選項(xiàng)都已經(jīng)配置好,打開makefiles/vs71/jsoncpp.sln 便可以開始編譯(默認(rèn)是使用 vs2003 編譯器的,打開時(shí)直接按照 vs2005 提示轉(zhuǎn)換即可)。三、靜態(tài)鏈接庫(kù)的使用vc中使用靜態(tài)庫(kù)的方法#pragma comment(lib, “xxx.lib”)但在編譯你應(yīng)用程序時(shí)可能出現(xiàn)類似如下的錯(cuò)誤1>libcm
3、td.lib(invarg.obj):error lnk2005: _invoke_watson 已經(jīng)在 msvcrtd.lib(msvcr90d.dll) 中定義1>libcmtd.lib(dbgheap.obj) : error lnk2005: _crtsetcheckcount 已經(jīng)在 msvcrtd.lib(msvcr90d.dll) 中定義1>libcmtd.lib(tidtable.obj) : error lnk2005: _encode_pointer 已經(jīng)在 msvcrtd.lib(msvcr90d.dll) 中定義1>libcmtd.lib(tidtab
4、le.obj) : error lnk2005: _decode_pointer 已經(jīng)在 msvcrtd.lib(msvcr90d.dll) 中定義解決辦法是在編譯jsoncpp的lib時(shí),選擇動(dòng)態(tài)運(yùn)行時(shí)庫(kù)具體含義如下開關(guān) 對(duì)應(yīng)的庫(kù) 版本 /mdmsvcprt.lib多線程dll的release版本/mddmsvcprtd.lib多線程dll的debug版本/mtlibcpmt.lib多線程靜態(tài)鏈接的release版本/mtdlibcpmtd.lib多線程靜態(tài)鏈接的debug版本四、jsoncpp 使用詳解jsoncpp 主要包含三種類型的 class:value、reader、writer。
5、jsoncpp 中所有對(duì)象、類名都在 namespace json 中,包含 json.h 即可。json:value 只能處理 ansi 類型的字符串,如果 c+ 程序是用 unicode 編碼的,最好加一個(gè) adapt 類來(lái)適配。1、valuejson:value 是jsoncpp 中最基本、最重要的類,用于表示各種類型的對(duì)象,jsoncpp 支持的對(duì)象類型可見 json:valuetype 枚舉值。可如下是用 json:value 類:json:value json_temp; / 臨時(shí)對(duì)象,供如下代碼使用json_temp"name" = json:value(“h
6、uchao”);json_temp"age" = json:value(26);json:value root; / 表示整個(gè) json 對(duì)象root"key_string" = json:value(“value_string”); / 新建一個(gè) key(名為:key_string),/賦予字符串值:”value_string”root"key_number" = json:value(12345); / 新建一個(gè) key(名為:key_number),/賦予數(shù)值:12345。root"key_boolean"
7、= json:value(false); / 新建一個(gè) key(名為:key_boolean),/賦予bool值:false。root"key_double" = json:value(12.345); / 新建一個(gè) key(名為:key_double),/賦予 double 值:12.345root"key_object" = json_temp; / 新建一個(gè) key(名為:key_object),/賦予 json:value 對(duì)象值。root"key_array".append(“array_string”);/ 新建一個(gè) ke
8、y(名為:key_array),/類型為數(shù)組,對(duì)第一個(gè)元素賦值為字符串:”array_string”root"key_array".append(1234); / 為數(shù)組 key_array 賦值,對(duì)第二個(gè)元素賦值為:1234。json:valuetype type = root.type();/ 獲得 root 的類型,此處為 objectvalue 類型。注:跟c+ 不同,javascript 數(shù)組可以為任意類型的值,所以 jsoncpp 也可以。如上幾個(gè)用法已經(jīng)可以滿足絕大部分 json 應(yīng)用了,當(dāng)然 jsoncpp 還有一些其他同能,比如說(shuō)設(shè)置注釋、比較 json
9、大小、交換 json 對(duì)象等,都很容易使用,大家自己嘗試吧。2、writer如上說(shuō)了 json:value 的使用方式,現(xiàn)在到了該查看剛才賦值內(nèi)容的時(shí)候了,查看 json 內(nèi)容,使用 writer 類即可。jsoncpp 的 json:writer 類是一個(gè)純虛類,并不能直接使用。在此我們使用 json:writer 的子類:json:fastwriter、json:styledwriter、json:styledstreamwriter。顧名思義,用 json:fastwriter 來(lái)處理 json 應(yīng)該是最快的,下面我們來(lái)試試。json:fastwriter fast_writer;std
10、:cout << fast_writer.write(root) << std:endl;輸出結(jié)果為:“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”再次顧名思義,用 json:styledwriter 是格式化后的 json,下面我們來(lái)看看 json:styledwriter 是怎樣格式
11、化的。json:styledwriter styled_writer;std:cout << styled_writer.write(root) << std:endl;輸出結(jié)果為:“key_array” : "array_string", 1234 ,“key_boolean” : false,“key_double” : 12.3450,“key_number” : 12345,“key_object” : “age” : 26,“name” : “大中華”,“key_string” : “value_string”3、readerjson:reader 是用于讀取的,說(shuō)的確切點(diǎn),是用于將字符串轉(zhuǎn)換為 json:value 對(duì)象的,下面我們來(lái)看個(gè)簡(jiǎn)單的例子。json:reader reader;json:value json_object;const char* json_document = “”age” : 26,”name” : ”huchao”;if (!reader.parse(json_document, jso
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《網(wǎng)店色彩設(shè)計(jì)》課件
- 《神經(jīng)癥年制》課件
- 《證券上市》課件
- 2024年農(nóng)業(yè)部門抗旱工作總結(jié)范文
- 2025年高考數(shù)學(xué)一輪復(fù)習(xí)之冪函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)
- 單位管理制度匯編大全人力資源管理
- 單位管理制度合并匯編【人事管理】
- 單位管理制度分享合集人員管理十篇
- 單位管理制度范例匯編人事管理
- 單位管理制度呈現(xiàn)大全人事管理十篇
- 期末模擬卷 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè)(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 《比特幣完整介紹》課件
- 江蘇省2023年生物小高考試題含答案解析
- 2019年同等學(xué)力(教育學(xué))真題精選
- [轉(zhuǎn)載]鄭桂華《安塞腰鼓》教學(xué)實(shí)錄
- 泵管清洗專項(xiàng)方案
- 門診手術(shù)室上墻職責(zé)、制度(共6頁(yè))
- 邊坡土壓力計(jì)算(主動(dòng)土壓力法)
- 鉆孔壓水試驗(yàn)計(jì)算EXCEL表格
- 機(jī)電安裝項(xiàng)目施工組織計(jì)劃方案
評(píng)論
0/150
提交評(píng)論