輕量c json庫(原始碼精簡適合學習)

2021-09-14 01:13:16 字數 2444 閱讀 5694

該庫為輕量級的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 物件 其中字串用雙引號...