[推荐] 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);
  }
}

待补充~

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值