在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物件中的陣列 那怎麼分別取...