c 第三方json解析庫 jsoncpp的使用

2021-06-29 15:17:01 字數 2737 閱讀 9534

json是一種資料交換格式,比較適合編寫和閱讀。jsoncpp是採用c++語言編寫的用來處理json格式的第三包。直接來說明改如何使用它,本文是基於windows下的。

建立乙個win32的空專案,將生成的lib檔案包含,附加包含目錄新增源**中的include資料夾。後面簡單說下比較常用的幾種json處理方法。

解析json物件:

1.首先看看最簡單的一種json格式,只有鍵-值的一重巢狀:

「id」 : 123,

"name" : "wu"

我們直接將上面的資料初始化到到string物件中,方便解析,後面都是如此

std::string json = "";

json::reader reader;

json::value root;

std::string name;

int id = 0;

if (reader.parse(json, root)) // reader將json字串解析到root,root將包含json裡所有子元素

2.再看看陣列的:

[ ,   ]

std::string json = "[ ,  ]";

json::reader reader;

json::value root;

std::string name;

int id = 0;

std::mapmapjson;

if (reader.parse(json, root)) // reader將json字串解析到root,root將包含json裡所有子元素

}

3.如果是這樣的陣列:

「id」 : [1, 2],

"name" : ["wu", "tan"]

std::string json = " ";

json::reader reader;

json::value root;

std::string name;

int id = 0;

if (reader.parse(json, root)) // reader將json字串解析到root,root將包含json裡所有子元素

for (int i = 0; i < root["name"].size(); ++i)

}

這種情況其實和上一種是類似的。

4.看看多重巢狀的情況,為了簡便,我們巢狀兩層:

"id" : 1,

"data" :

std::string json = " }";

json::reader reader;

json::value root;

std::string name;

int id = 0;

int age = 0;

if (reader.parse(json, root)) // reader將json字串解析到root,root將包含json裡所有子元素

其實這種情況和第一種的類似,只是通過root["key"]取到的還是鍵值對,繼續通過key取值即可。

基本上再複雜的資料格式也是上面幾種情況的組合而已。

json物件的生成:

1.生成上面第一種情況的json格式:

json::value root;  

root["id"] = 123;

root["name"] = "wu";

std::string json = root.tostyledstring();

我們會將生成的json物件序列化到string物件中去,後面也是如此。

2.生成上面第二種情況的json:

json::value root;

for (int i = 0; i < 2; ++i)

else }

std::string json = root.tostyledstring();

還可以這樣生成:

json::value root;

json::value item;

for (int i = 0; i < 2; ++i)

else

}std::string json = root.tostyledstring();

3.生成上面第三種情況的json:

json::value root;

for (int i = 0; i < 2; ++i)

else }

std::string json = root.tostyledstring();

4.生成上面第四種情況的json:

json::value root;

root["id"] = 1;

root["data"]["name"] = "wu";

root["data"]["age"] = 26;

std::string json = root.tostyledstring();

其實解析和生成json是互逆的,只要明白這幾種情況,其他的無非是這幾種情況的各種組合,原理是一樣的。

c 第三方json解析庫 jsoncpp的使用

json是一種資料交換格式,比較適合編寫和閱讀。jsoncpp是採用c 語言編寫的用來處理json格式的第三方庫。直接來說明改如何使用它,本文是基於windows下的。解壓後用vs開啟 makefiles vs71 jsoncpp.sln專案,選擇lib json專案編譯來生成lib檔案,為了方便,...

關於解析json 使用第三方庫Gson

解析json是我們必備的技能之一,解析json可以使用原生api,也可以使用第三方庫。前面我們有說過使用原生api,不過在我們解析比較複雜的json資料的時候如果使用原生api會顯得很麻煩。因為你要一層一層的往裡解析,資料多的話可以嘗試使用第三方庫gson來解析。使用gson解析json資料 這次解...

使用json心得(第三方庫jackson)

collectionpersonresult new arraylist 將要傳送給前台的資料放入map集合去 mapmap new hashmap map.put person personresult map.put departmentcount 50 定義乙個totalresult物件,封裝...