[推薦] C++解析json包:jsoncpp ——入門攻略

最近有面臨一個問題,就在這裏說出來吧,各位大神如果有看到~能解答我的疑惑,我將十分感激。問題是這樣的,目前我們打算做一個集成多個 信號處理算法的桌面應用,方便大家在處理數據的時候方便快捷的實現。因爲考慮到繪圖問題,想到echarts畫圖那麼好看,乾脆拿來直接用就好路也不用自己重新寫。但是echarts用的是js,而處理信號的算法可全部都是c++實現的啊,所以現在面臨着幾個選擇

  1. 把所有的算法用js重寫一遍。(累死我吧~天 -_-|||
  2. 用nodejs調用c++代碼。(不是不可以,只是看着就很難受 ///-_-///
  3. 將c++的算法實現放在服務器上,通過http接收數據和傳輸數據。(可以,可是你要我用c++處理http請求麼?蒼天有眼 +__+
  4. 借用3,不過可以用python處理http請求,算法讓python調吧~(誒,似乎很棒,不知道有沒有更棒的 //><
  5. 我猜肯定有更好的解決辦法,大佬指點~

最後因爲實在是有點懶,帶着順便還想學學c++的態度拿起方案3就擼起來了

返回的數據準備用json的,實在是比較喜歡這種簡介的數據格式,不能再愛了~

於是就用上路jsoncpp,這也是個好東西,不能再愛咯~

接下來就準備用曾刪改查+其他的路子來給各位講講jsoncpp的常見用法吧~不能再冷靜咯~

安裝和配置

當然首先你要把jsoncpp裝上去~因爲本菜鳥一直用的是ubuntu + cmake 這裏環境就不換啦~如果是window用戶,誠摯的抱歉希望足夠~

安裝

easy

sudo apt install libjsoncpp-dev

cmake配置

find_package(PkgConfig REQUIRED)
pkg_check_modules(JSONCPP jsoncpp)
link_libraries(${JSONCPP_LIBRARIES})
message(${JSONCPP_LIBRARIES})

target_link_libraries(<your_target> ${JSONCPP_LIBRARIES})

使用

#include "json/json.h"

增刪改查

Json::Value root;
root["key1"] = "value1";

// 數組
Json::Value array_root;
for(int i = 0; i < 10; i++){
    array_root.append(i);   
}

Json::Value root;
root["key1"] = "value1";
root.removeMember("key1");

Json::Value root;
root["key1"] = "value1";
root["key1"] = "value2";

查(簡單的查詢)

Json::Value root;
root["key1"] = "value1";
// 是否存在
if(root["key1"].isNull()){
    cout << "key1 do not exist" << endl;
}
// 讀取數據
string out = root["key1"].asString();
cout << out << endl;

// 獲取size
int root_size = root.size()
cout << root_size << endl;

其他

解析json字符串

Json::Value in_root;
Json::Reader reader;
// 現在json字符串就變成json對象,你可以通過in_root訪問其內容
reader.parse(json_str, in_root)

導出爲字符串

Json::Value root;
root["key1"] = "value1";
root["key2"] = "value2";
string out = root.toStyledString();
cout << out << endl;

將可迭代容器存入json對象

主要是實現方式,對我這個小白來說很高級,就記錄一下~

template<typename Iterable>
void StatsEndpoint::Iterable2Json(Json::Value &value, Iterable const &cont){
  for(auto &&element: cont){
    value.append(element);
  }
}

待補充~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章