JsonCpp使用簡介

2021-07-15 06:34:47 字數 3464 閱讀 1275

json 名稱/值對 例如 "firstname" : "john"

json 物件在花括號中書寫,例如

json 陣列,陣列可包含多個物件

,,]}

jsoncpp

json::value 是jsoncpp 中最基本、最重要的類,用於表示各種型別的物件,

json::reader 用來將記憶體或檔案中的json資料轉換成json::value型別

json::writer 用來將json::value型別轉換成記憶體或檔案中的json資料

#include 

#include

#include "json/json.h"

using

namespace

std;

using

namespace json;

int main(int argc, char *argv)

"; json::reader reader;

json::value root;

/*reader將json字串解析到root,root將包含json裡所有物件*/

if (!reader.parse(str, root))

//json::value型別可以直接使用cout列印出來

cout

<< "json : "

<< endl << root << endl;

string name0 = root["name0"].asstring(); // 訪問值對,name0= "helloworld"

cout

<< "name0 : "

<< name0 << endl;

int name1 = root["name1"].asint(); // 訪問值對,name1 = 100

cout

<< "name1 : "

<< name1 << endl;

double name2 = root["name2"].asdouble(); // 訪問值對,name2 = "200.0"

cout

<< "name2 : "

<< name2 << endl;

bool name3 = root["name3"].asbool(); // 訪問值對 name3 = true

cout

<< "name3 : "

<< name3 << endl;

int name4 = root.get("name4", 20).asint(); //訪問值對 name4 如果不存在就返回預設值20,沒有寫入root當中.

cout

<< "name4 : "

<< name4 << endl;

cout

<< "json : "

<< endl << root << endl;

return

0;}

在c盤建立test.json

----------------------------

----------------------------

#include

#include

#include "json/json.h"

using

namespace

std;

using

namespace json;

int main(int argc, char *argv)

if (!reader.parse(ifs, root))

cout

<"name4"] = json::value("hellword2"); //新增新值對

root["name5"] = json::value(300);

root["name6"] = json::value(400.123);

root["name7"] = json::value(true);

cout

<"name4"] = json::value("hellword3"); //如果已經存在,則修改值對內容

root["name5"] = json::value(500);

root["name6"] = json::value(600.123);

root["name7"] = json::value(false);

cout

<"name6");

root.removemember("name7");

cout

ifs.close(); //先把test.json檔案關閉

std::ofstream ofs; //通過ofstream把root寫入json檔案中

ofs.open("c:/test.json");

ofs << strwrite;

ofs.close();

return

0;}

#include 

#include

#include "json/json.h"

using

namespace

std;

using

namespace json;

int main(int argc, char *argv)

, ]"

"}";

json::reader reader;

json::value root;

if (!reader.parse(str, root))

cout

<"name1"];

int file_size = name1_value.size(); //獲取陣列name1的陣列大小

cout

<<"file_size = "

cout

0;}

#include 

#include

#include "json/json.h"

using

namespace

std;

using

namespace json;

int main(int argc, char *argv)

"; json::reader reader;

json::value root;

if (!reader.parse(str, root))

root["name1"].removeindex(0);

cout

<"age"] = 23;

item0["male"] = true;

cout

json::value item1;

item1["age"] = 24;

item1["male"] = false;

cout0;}

Jsoncpp程式設計介面及使用方法簡介

jsoncpp程式設計介面簡介 jsoncpp是乙個使用c 語言實現的 物件導向的json庫,以靜態庫的形式提供,使用非常簡單。其提供的介面中有3個核心類,分別為 reader writer value。reader類 負責從字串或者輸入流中載入json文件,並進行解析,生成代表json文件的val...

JsonCpp使用優化

最近乙個專案在使用jsoncpp,jsoncpp簡潔易用的介面讓人印象深刻。但是在實際使用過程中,我發現jsoncpp的效能卻不盡如人意,所以想著方法優化下效能。理解 1 jsoncpp中一切都是value,value用union指向自己儲存的資料。value的型別分為兩種,一種是容器型別,比如ar...

jsoncpp使用示例

下面的示例程式顯示了jsoncpp的初步使用方法,包括了自定義物件的序列化等操作。include json json.h include using namespace std struct data可序列化物件 void deserialize json value root int main i...