該庫為輕量級的c++ json解析與構造庫,原始碼很短,適合學習,覺得ok的點個star吧。
提供了的功能:
除此之外,由於json支援了多種資料型別,還可以將jsonarray物件看成是python的list,jsonobject看成是python的dict,庫中提供了方便操作的api函式。例如以下初始化方法,
jsonarray arr =
;// 類似於python的list
jsonarray arr2 =
list
(1.23
,"sdfsdg"
,234
,nullptr);
//提供乙個list初始化巨集,類似於python的list
jsonobject obj =},
,,,,
},};
// 可以看成是python的dict
jsonobject obj2 =
object
(keyvalue
("username"
,"hhk"),
keyvalue
("obj"
,object
(keyvalue
("abcd"
,list(1
,2.3
,"hahahaha"))
,keyvalue
("obj"
,object
(keyvalue
("key"
,"this is obj.obj.key' s value"))
))),
keyvalue
("null"
,nullptr),
keyvalue
("list"
,list(1
,"qwerty"
,2.34
,object
(keyvalue
("key"
,"this is a key"),
keyvalue
("key2"
,"this is a key2"),
))),
);// 提供了乙個初始化巨集,類似於python的dict
// 注:使用object list初始化巨集的目的是為了替代{}來進行初始化,因為有時候大括號看起來會不夠直觀。
實現該庫的一些技巧:
編譯依賴:
如果是windows平台推薦使用cygwin套件(可以在windows下編譯linux軟體),配合clion,開發起來挺方便的。
例如windows平台下(linux下類似),編譯靜態庫的方法如下,編譯成功後在build目錄下生成libejson.a靜態庫。
此時在build目錄下生成ejson_test.exe和libejson.a,直接執行ejson_test.exe即可。
這裡json支援的型別有int, float, double, const char* , string, nullptr(cpp中的空指標)
json array
json object
字串轉換為json物件
由於我們不知道字串是array還是object,我們使用jsonbase類來接受返回的結果。
(jsonbase中有isjsonarray 和 isjsonarray 方法,可以方便我們進行型別判斷)
例如以下,
string parse_str =
r"(, 123.3]})"
;jsonbase* a = jsonbase::
parse
(parse_str)
;cout <<
*a << endl;
jsonobject *b =
dynamic_cast
>
(a);
//型別轉換
cout << b-
>get
("key1"
)<< endl;
cout << b-
>get
("key2"
).get<
int>(1
)<< endl;
parse方法用於不知道字串是array還是object,parse_obj方法返回jsonobject,parse_arr方法返回jsonarray。(parse_obj,parse_arr用於明確知道字串的型別)
如果字串不是json字串,則丟擲jsonparseexception異常。
c json原始碼分析
本文主要講述對於c json部分 api的作用 c下面的 json 字串格式 直接寫在程式裡面,是用來轉義 的 此處格式必須正確,否則後面解析會出問題 在c語言中 json 串說白了就是字串,用字元陣列儲存,在解析過程中將自己要解析的 json 串傳入cjson parse value 函式,即可 ...
C json原始碼呼叫
2,挑選需要的 檔案。3,通過codeblacks編譯器驗證原始碼的使用 2,挑選需要的 檔案 jsoncpp src 0.5.0 src lib json jsoncpp src 0.5.0 include json 複製這兩個資料夾下的所有檔案到同乙個資料夾下面,資料夾名字命名為json,如下所...
cJSON 原始碼分析
在解決這三個問題之前,先介紹一下我所使用的原始碼分析工具 gcc g 原始碼編譯 make 原始碼構建 需要編寫makefile gdb 原始碼除錯 json主要的值型別null,false,true,number 數字 string 字串 array 陣列 以及object 物件 其中字串用雙引號...