C 專案RapidJson的詳細用法總結

2021-08-14 16:16:54 字數 2895 閱讀 7378

本文基於2023年1月最新倉庫**撰寫

倉庫:

用法: 將』include/rapidjson』資料夾copy到工程內直接使用

android ndk開發會增大apk體積1.4m, 當然, 肯定比自己寫的要快

**請見native-lib.cpp檔案

std::string json = std::string(buffer.getstring());
可以通過c++ string的c_str()也可以直接通過buffer.getstring(), 該buffer是rapidjson::stringbuffer類的物件

rapidjson::document document;

document.setobject();

// 新增name, value

const char* name = "success_url"

; const char* value = ""

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

// 新增json object

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 array

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

for (int i = 0

; i < 2; i++)

char * jsonarrayname = "jsonarrayname"

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

rapidjson::stringbuffer buffer;

rapidjson::writerwriter(buffer);

document.accept(writer);

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

logd("testaddmember = %s", json.c_str());

// 1. 把 json 解析至 dom。

const char* json = ""

; document d;

d.parse(json);

// 2. 利用 dom 作出修改。

value& s = d["stars"];

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

// 3. 把 dom 轉換(stringify)成 json。

stringbuffer buffer;

writerwriter(buffer);

d.accept(writer);

// output

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

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;

C 專案RapidJson用法總結

整個json字串由乙個document物件來管理 rapidjson document document document.setobject 新增name value對 const char name name const char value zhangdada document.addmemb...

C 使用RapidJSON庫處理json檔案

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

C 之rapidjson構造Json資料集合

專案中用到rapidjson開源庫,用於json資料的解析和封裝.記錄下使用的一些技巧 構建陣列物件 extra 如下 申請陣列 value array2 karraytype for int i 0 i 3 i 申請物件 value object3 kobjecttype 新增陣列成員 objec...