Jsoncpp程式設計介面及使用方法簡介

2021-07-03 17:50:42 字數 2469 閱讀 1521

jsoncpp程式設計介面簡介

jsoncpp是乙個使用c++語言實現的、物件導向的json庫,以靜態庫的形式提供,使用非常簡單。其提供的介面中有3個核心類,分別為:reader、writer、value。

reader類:負責從字串或者輸入流中載入json文件,並進行解析,生成代表json文件的value物件。

writer類:負責將記憶體中的value物件轉換成json文件,輸出到檔案或者是字串中。

value類:其物件代表乙個json值,既可以代表乙個文件,也可以代表文件中乙個值。如同json中定義的「值」一樣,value是遞迴的。  

一、解析json文件 

解析乙個json文件的大致過程如下:

//生命頂級value物件  

json::value root;  

//讀取文件:

std::string strdoc = readfromfile(…);  

//宣告reader物件

json::reader _reader;  

//解析json文件,生成json值

_reader.paser(strdoc, root); 

/*從root中提取資料,基本模式如下函式所示,

其中param out只是抽象的佔位符,代表用來儲存從value中提取的資料物件,並不是乙個實際實現的類。*/

getvaluefromtree( param out, json::value &value )

}

break;

case json::objectvalue:

}

break;

default:

} }

不同定義的json文件,儲存不同的資料,對於解析之後的資料,也需要使用不同的資料結構來儲存。比如下面的結構體:

struct user  

serverinfo;

int skillids[3];

};

可使用如下定義的json文件表示:

, 

"skillids":

[

1,3,5

] }

}

二、從記憶體中建立value物件

在需要將記憶體資料轉換為json時,就需要從記憶體中建立乙個value物件,然後再轉化為文字進行輸出。從記憶體中建立value物件也是常用的操作,對於需要轉化為json文件表示的資料結構,都需要定義乙個tojson成員函式:

bool tojson(json::value& value); 

其內部實現模式為:

(1)如果是乙個簡單的value值,如布林、數值、空值、字串等,則直接使用建構函式建立value。如:value(datatype);  

(2)如果要建立乙個物件型別的value,首先使用value root(valuetype type = objectvalue)宣告乙個空的、型別為物件的value物件。

然後使用類似於root[「type」] = 「user_info」的表示式,往root中新增屬性(key/value對)。

, 

"skillids":

[

1,3,5

] }

}

需要如下**:

//宣告object型別的物件,根物件

value root(objectvalue); 

//新增type屬性,這裡隱含自動型別轉換,將string轉化為value

root[「type」] = 「user_info」; 

//下面建立data子物件

value data(objectvalue); 

data[「id」] = 1; 

data[「name」] = 「spring」; 

value _server(objectvalue);

_server[「homeserver」] = 1001;

_server[「vistserver」] = 1003; 

data[「server」] = _server; 

value _skillids(objectvalue); 

data[「skillids」] = _skillids;

root[「data」] = data;  

至此,root物件構建完畢。

三、value值轉換為json文件

jsoncpp提供了幾個類可以完成這個任務,雖然稍有不同,但基本一樣,盡在排版風格上稍有差異。以簡單的fastwriter為例:

json:: fastwriter writer; 

string  _jsondoc = writer.write( root ); 

_jsondoc中即包含了輸出的json格式的文件。

Jsoncpp的安裝配置及示例使用

jsoncpp安裝 jsoncpp 是乙個 c 封裝的 json 包,跨平台支援 windows linux unix 等多系統。linux 下面編譯需要使用到 cmake 進行編譯。jsoncpp原始碼 git clone 進到目錄 cd jsoncpp master 建立目錄 mkdir p b...

第三方庫的使用 jsoncpp安裝與測試

安裝步驟 jsoncpp在ubuntu18.14 的安裝 大概分為以下步驟 2 解壓縮 如果是git clone 就不需要解壓了 3 進入資料夾,建立 build資料夾,然後進行編譯安裝 編譯安裝的過程如下 使用了cmake mkdir build cd build cmake sudo make ...

AJAX介面及普通AJAX使用及示例

以下為示例 1 ajax介面 var ajax function this.issync function 遠端請求ajax 位址 this.setremoteurl function url 獲取url位址 var getcacheparameterstring function return 設...