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...