rapidjson使用隨筆

2021-08-22 08:17:14 字數 1855 閱讀 4537

做工程時需要使用c++與json檔案進行資料互動,且需要處理巢狀陣列,選用了rapidjson作為解析器。

rapidjson的api見其官方說明文件:

在標頭檔案中新建rapidjson::document作為全域性document,新建vector作為全域性vector備用。

rapidjson::document jsondocument;

vector< vector> line_v;

一、讀取json檔案資料於document

void read_json_file(const std::string file_path)

if(!jsondocument.isobject())

}

二、將document資料寫入json檔案中

void write_json_file(const std::string file_path)
三、讀取json檔案中名為"virtualwall"的menber巢狀陣列資料資料(格式:[[a1,b1,c1,d1],[a2,b2,c2,d2],...])

void load_json_data(const std::string file_path)

else

line_v.push_back(line_v_t);

line_v_t.clear();

}} }

參考陣列格式rapidjson::karraytype的value,使用object形式的value可以解析json中巢狀字典的資料。

四、向json檔案中key值為"virtualwall"的value新增元素[ax,bx,cx,dx]

void add_data(const std::string file_path,vectormsg)

line_v.push_back(line_v_t); //update the vector

jsondocument["virtualwall"].pushback(l_data_temp,jsondocument.getallocator());

write_json_file(json_file_path);

}

五、清空json檔案中key值為"virtualwall"的資料

void clear_data()
六、刪除"virtualwall"中巢狀陣列中的指定元素[ax,bx,cx,dx]

void delete_data(const vectormsg)

read_json_file(json_file_path);

jsondocument["virtualwall"].setarray();

rapidjson::value l_data_temp(kobjecttype);

l_data_temp.setarray();

for(int i = 0; i < line_v.size(); i++)

jsondocument["virtualwall"].pushback(l_data_temp,jsondocument.getallocator());

l_data_temp.setarray();

} write_json_file(json_file_path);

}bool data_compare(const vectora, const vectorb)

if( a.size() == i )

return true;

else

return false;

}

rapidjson使用樣例

rapidjson預設支援的字元格式是utf 8的,一般中間介面是json檔案的話儲存為utf 8比較通用一些。如果是unicode的需要轉換。但從原始碼中的ch型別看,應該是支援泛型的,具體在用到了可以仔細研究一下。這篇文件中有json解析相關庫的效能比較,rapidjson還是各方面均衡比較突出...

C 使用RapidJSON庫處理json檔案

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

C C 學習筆記 rapidjson的簡單使用

answer rapidjson是乙個 c 的 json 解析器及生成器 rapidjson不依賴第三方庫,而且只包含標頭檔案,使用方便簡單。有的時候,需要的json格式是十分複雜的,如下所示 value是乙個陣列且裡面每個元素又是乙個json格式,std string build json msg...