最近有面臨一個問題,就在這裏說出來吧,各位大神如果有看到~能解答我的疑惑,我將十分感激。問題是這樣的,目前我們打算做一個集成多個 信號處理算法的桌面應用,方便大家在處理數據的時候方便快捷的實現。因爲考慮到繪圖問題,想到echarts畫圖那麼好看,乾脆拿來直接用就好路也不用自己重新寫。但是echarts用的是js,而處理信號的算法可全部都是c++實現的啊,所以現在面臨着幾個選擇
- 把所有的算法用js重寫一遍。(累死我吧~天 -_-|||
- 用nodejs調用c++代碼。(不是不可以,只是看着就很難受 ///-_-///
- 將c++的算法實現放在服務器上,通過http接收數據和傳輸數據。(可以,可是你要我用c++處理http請求麼?蒼天有眼 +__+
- 借用3,不過可以用python處理http請求,算法讓python調吧~(誒,似乎很棒,不知道有沒有更棒的 //><
- 我猜肯定有更好的解決辦法,大佬指點~
最後因爲實在是有點懶,帶着順便還想學學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);
}
}
待補充~