C 專案RapidJson用法總結

2021-09-21 06:45:53 字數 3019 閱讀 9867

//整個json字串由乙個document物件來管理

rapidjson::document document;

document.setobject();

//新增name:value對

const char *name = "name";

const char *value = "zhangdada";

document.addmember(rapidjson::stringref(name), rapidjson::stringref(value), document.getallocator());

//新增json 物件

rapidjson::value info_objects(rapidjson::kobjecttype);

std::string jsonobject = "json_object";

info_objects.addmember(rapidjson::stringref("class_room"), rapidjson::stringref("no.6110"), document.getallocator());

info_objects.addmember(rapidjson::stringref("teacher_name"), rapidjson::stringref("zhangsanfeng"), document.getallocator());

document.addmember(rapidjson::stringref(jsonobject.c_str()), info_objects, document.getallocator());

//新增json 陣列

rapidjson::value array_objects(rapidjson::karraytype);

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

char *jsonarrayname = "jsonarrayname";

document.addmemory(rapidjson::stringref(jsonarrayname), array_objects, document.getallocator());

//將構造好的json轉化成c++字串的形式

rapidjson::stringbuffer buffer;

rapidjson::writerwriter(buffer);

document.accept(writer);

std::string json = std::string(buffer.getstring));

stringbuffer s;

writerwriter(s);

writer.startobject(); // between startobject()/endobject(),

writer.key("hello"); // output a key,

writer.string("world"); // follow by a value.

writer.key("t");

writer.bool(true);

writer.key("f");

writer.bool(false);

writer.key("n");

writer.null();

writer.key("i");

writer.uint(123);

writer.key("pi");

writer.double(3.1416);

writer.key("a");

writer.startarray(); // between startarray()/endarray(),

for (unsigned i = 0; i < 4; i++)

writer.uint(i); // all values are elements of the array.

writer.endarray();

writer.endobject();

// std::cout << s.getstring() << std::endl;

const char *buffer = "}";

document document;

document.parse(buffer);

if(document.hasparseerror())

if(!document.hasmember("code"))

int obj1 = document["code"].getint();

if(!document.hasmember("msg"))

char *msg = document["msg"].getstring();

rapidjson::value &obj2 = document["data"];

if(!obj2.isobject())

const char* json = "";

//1.建立json文件物件

document d;

document.parse(buffer);

//2.修改鍵值

value& p = d["project"];

p.setstring(rapidjson::stringref("raoidjson-new"));

value& s = d["stars"];

s.setint(s.getint() + 1);

//3.將json物件轉換成c++字串

stringbuffer buffer;

writerwriter(buffer);

d.accept(writer);

//4.列印輸出

// output

std::cout << buffer.getstring() << std::endl;

C 專案RapidJson的詳細用法總結

本文基於2018年1月最新倉庫 撰寫 倉庫 用法 將 include rapidjson 資料夾copy到工程內直接使用 android ndk開發會增大apk體積1.4m,當然,肯定比自己寫的要快 請見native lib.cpp檔案 std string json std string buff...

const,static,extern用法總結

const應用 一 對於基本宣告 const int r 100 標準const變數宣告加初始化,編譯器經過型別檢查後直接用100在編譯時替換。二 對於指標 1.int x 10 const int r x 指標指向的內容是常量,r指向的內容不能夠通過r改變,但如果是非const,內容可以通過自己改...

C 使用RapidJSON庫處理json檔案

win8系統,ide為visual studio 2013 匯入標頭檔案,設定標頭檔案的包含目錄,選擇專案 屬性。include include 檔案讀寫 include include include using namespace rapidjson using rapidjson docume...