jsoncpp庫簡單使用示例

2021-08-18 01:54:48 字數 4596 閱讀 6459

在windows下使用cmake編譯原始碼,版本為1.8.4。

#include

#include

#include

// 引用

/* 測試**段1: 從json格式的字串中解析讀: */

inttest1()

;/* 測試**段2: 將json物件的值輸出: 包含格式化輸出 */

inttest2()

;/* 測試**段3: 從json格式的檔案中解析讀: */

#include

#include

// 使用 assert斷言,在linux下會出現core dumped ?

inttest3()

;/* 測試**段4: 判斷key是否存在, 是否為空 */

inttest4()

;/* 測試**段5: 獲取所有成員, 刪除某個成員 */

inttest5()

;int

main()

// 從json格式的字串中解析讀:

inttest1()

,,]}

)"; json:

:reader reader;

json:

:value root;

if(reader.

parse

(strjson, root))}

std:

:cout << std:

:endl;

return0;

}//將json物件的值輸出: 包含格式化輸出

inttest2()

root[

"key1"]=

"value1"

;//沒有時會新增加

root[

"key2"]=

"value2"

; root[

"array"

]= arrayobj;

//未格式化輸出json格式內容

json:

:fastwriter writer;

std:

:string json_str = writer.

write

(root)

; std:

:cout << json_str << std:

:endl;

// 格式化輸出json格式內容 1

json:

:styledwriter swriter;

json_str = swriter.

write

(root)

; std:

:cout << json_str << std:

:endl;

// 格式化輸出json格式內容 2

std:

:string out = root.

tostyledstring()

; std:

:cout << out << std:

:endl;

std:

:cout <<

"--------------------"

<< std:

:endl;

std:

:cout << std:

:endl;

return0;

}//從json格式的檔案中解析讀:

inttest3()

,

,

,

,

]

} */ std:

:ifstream ifs;

ifs.

open

("test.json");

assert

(ifs.

is_open()

);json:

:reader reader;

json:

:value root;if(

!reader.

parse

(ifs, root, false)

) std:

:string out = root[

"mmac"].

asstring()

; std:

:cout <<

"mmac "

<< out << std:

:endl;

out = root[

"wmac"].

asstring()

; std:

:cout <<

"wmac "

<< out << std:

:endl;

const json:

:value arrayobj = root[

"data"];

for(

int i =

0; i < arrayobj.

size()

; i++

) std:

:cout << std:

:endl;

return0;

}//判斷key是否存在, 是否為空

inttest4()

,"tab-length":[

],"tab"

:null

})";

json:

:reader reader;

json:

:value root;if(

! reader.

parse

(strjson,root)

)// 是否為成員,存在

if(root.

ismember

("encoding"))

else

if(root.

ismember

("encod"))

else

if(root.

ismember

("encod"))

else

// 鍵值是否為空 null

if(root[

"tab"].

isnull()

)if(root[

"newname"].

isnull()

)// 總結就是要判斷是否含有key,使用ismember成員函式,

// value是否為null使用isnull成員函式,value是否為空可以用empty() 和 size()成員函式。

std:

:cout << std:

:endl;

if(root.

ismember

("tab-length"))

else std:

:cout <<

"not null"

<< std:

:endl;

// print "not null", there is a array object(), through this array object is empty

std:

:cout <<

"empty: "

<< root[

"tab-length"].

empty()

<< std:

:endl;

//print empty: 1

std:

:cout <<

"size: "

<< root[

"tab-length"].

size()

<< std:

:endl;

//print size: 0

}return0;

}// 獲取所有成員, 刪除某個成員

inttest5()

,"tab-length":[

],"tab"

:null

})";

json:

:reader reader;

json:

:value root;if(

!reader.

parse

(strjson, root)

) json:

:value:

:members members = root.

getmembernames()

;//win32 typedef std::vectormembers;

for(

auto

& member : members)

std:

:cout << member << std:

:endl;

// 所有的第一級 keyname

root.

removemember

("tab-length");

// 刪除某個成員

std:

:cout

<< std:

:endl;

return0;

}

tip:string型別為utf-8轉換為多位元組string

auto utf8tostring =

(const std:

:string& utf8data)

;

jsoncpp簡單示例

scons platform linux gcc 編譯出來的庫檔案在其libs linux gcc 4.4.2目錄下,有libjson linux gcc 4.4.2 libmt.so和libjson linux gcc 4.4.2 libmt.a。標頭檔案在解壓目錄下的include中。我的jso...

jsoncpp簡單示例

1 編譯jsoncpp mkdir usr jsoncpp cp r include usr jsoncpp cp r libs usr jsoncpp 2 jsoncpp簡單例項 1 反序列化json物件 比如乙個json物件的字串序列如下,其中 array 表示json物件中的陣列 那怎麼分別取...

jsoncpp簡單示例

1 編譯jsoncpp mkdir usr jsoncpp cp r include usr jsoncpp cp r libs usr jsoncpp 2 jsoncpp簡單例項 1 反序列化json物件 比如乙個json物件的字串序列如下,其中 array 表示json物件中的陣列 那怎麼分別取...