jsoncpp 库的使用.

 //2.测试一下jsoncpp库是否好使.Json::Value root;Json::Value data;root["action"] = "run";data["number"] = 1;root["data"] = data;Json::FastWriter writer;std::string json_str = writer.write(root);RCLCPP_INFO(this->get_logger(), "json:'%s' --> test ", json_str.c_str());//3.解析json数据Json::Value root1;Json::Reader reader;reader.parse(json_str, root1);string action_ = root1["action"].asString();Json::Value  data1 = root1["data"];string number_ = data1["number"].asString();RCLCPP_INFO(this->get_logger(), "json_parse:'%s', '%s' --> test ", action_.c_str(), number_.c_str());

ros2 工程配置

jsoncpp 通过源码形式加入Qt项目

注:经jsoncpp 编译成c++库,通过Qt工程调用,出现一个指针转换的错误,个人认为是c++11标准没有添加到Qt工程中导致的。

上图由于我的项目中缺少c++语言标准的设置,不清楚是因为什么
故采用另外一个方案,将jsoncpp源码库集成到Qt工程中,即可使用,编译运行没有任何问题,记录一下.

#include "JsonTest.h"
#include <iostream>
#include <QDebug>
//#include "QJson/parser.h"
//#include "QJson/serializer.h"
//#include "QJson/qobjecthelper.h"#include "json/json.h"JsonTest::JsonTest(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);generate_json_string();}void JsonTest::generate_json_string()
{/* QJsonDocument jdoc;QJsonObject obj;QJsonArray  arr;*/Json::Value root;Json::Value data;root["action"] = "run";data["number"] = 1;root["data"] = data;Json::FastWriter writer;std::string json_str = writer.write(root);qDebug() << "json_str:" << QString::fromStdString(json_str);}void JsonTest::parse_json_string()
{}

jsoncpp 打包数组数据

Json::Value root;Json::Value dev;Json::FastWriter writer;Json::Value topic_msg;for (int i = 0; i < tasks.size(); i++) {dev["id"] = tasks[i].uav_id_;dev["lon"] = tasks[i].target_pos_[0] * 10000000; //1E7 degdev["lat"] = tasks[i].target_pos_[1] * 10000000; //1E7 degdev["alt"] = tasks[i].target_pos_[2] * 10000000; //1E7 degroot.append(dev);qDebug() << "uav_id:" << tasks[i].uav_id_ << " lon:" << tasks[i].target_pos_[0] << " lat:" << tasks[i].target_pos_[1] << " alt:" << tasks[i].target_pos_[2];}//将json对象转换为json字符串Json::String str = writer.write(root);

模拟发送接收数据

由于linux中ros系统与win10中的qgis系统进行通信,故需要使用rosbridge桥,进行中间消息转换。
故写了一段测试转换的代码
//1.测试json数据解析, 模拟接收线程,接收到无人机位置信息数据.Json::Value msg;Json::Reader reader;Json::FastWriter writer;Json::Value uav_pos;Json::Value dev; // 无人机位置信息 jsonJson::Value data; // dev["id"] = 100; //无人机iddev["lon"] = 1001234567;dev["lat"] = 341234567;dev["alt"] = 300;//2.模拟无人机发送的位置信息代码,将数据进行打包.uav_pos["data"] = dev;  //"data" 字段对应 ros系统中 std_msgs/String 类型的消息.Json::String str = writer.write(uav_pos); //位置信息整体打包.qDebug() << "uav_pos --> " << QString::fromStdString(str);//3.接收到的数据.应为QString类型,需要转换为Json::String类型QString  q_str = QString::fromStdString(str);reader.parse(q_str.toStdString(), msg);data = msg["data"];qDebug() << "uav_pos --> " << "id:" << data["id"].asInt() << " lon:" << data["lon"].asInt() << " lat:" << data["lat"].asInt() << " alt:" << data["alt"].asInt();

5007.jsoncpp库编程相关推荐

  1. c语言二级编程题库,二级C语言题库-编程题.doc

    二级C语言题库-编程题 第 PAGE \* Arabic \* MERGEFORMAT 27 页第 PAGE \* Arabic \* MERGEFORMAT 27 页 1.请编写函数fun,其功能是 ...

  2. STM32F103固件库编程:关于core_cm3.c的错误

    STM32F103固件库编程:关于core_cm3.c的错误. 解决方法有两种: 1.直接删除固件库中的core_cm3.c文件,keil已有替代文件. 2.ARM编译器版本从6,改回到5. 提示错误 ...

  3. jsoncpp 库的使用方法

    1. 下载jsoncpp, 地址: http://sourceforge.net/projects/jsoncpp/ 2. 编译jsoncpp: jsoncpp文件中提供了vs71的工程文件以及mak ...

  4. 【示例】Lucene查询索引库编程步骤

    Lucene查询索引库编程步骤

  5. 【示例】Lucene创建索引库编程步骤

    [示例]Lucene创建索引库编程步骤

  6. C++调用JSON-CPP库实现JSON字符串解析

    1.下载JSON-CPP库https://sourceforge.net/projects/jsoncpp/ 2.解压jsoncpp-src-0.5.0.tar 3.打开VS2010新建一个名为tes ...

  7. STM32在CubeMX下HAl库编程MISO为何设置和MOSI相同

    首先看一下库函数编程下我们的操作: GPIO_Port.GPIO_Mode = GPIO_Mode_IN_FLOATING;//模式GPIO_Port.GPIO_Pin = GPIO_Pin_6; / ...

  8. 浙江大学pta答案python第四章_浙大PTA-Python题库 编程题第一章(1-1~1-3)题解

    其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/1070206 ...

  9. 两台电脑串口传输文件及调用opencv库编程显示图片和文本

    文章目录 一.两台电脑利用串口进行文件传输 (一).实验内容 (二).配置环境 (三).实验过程 (四).结果分析 二.在Ubuntu下基于Linux环境调用opencv库编程显示图片和文本 (一). ...

最新文章

  1. mysql font zhushi_关于在mysql front中使用注释符报错的问题
  2. Vim技能修炼教程(16) - 浮点数计算函数
  3. 数字语音信号处理学习笔记——语音信号的同态处理(3)
  4. [詹兴致矩阵论习题参考解答]习题3.6
  5. boost::lexical_cast模块测试 Source 是否不可复制
  6. Reflect.ownKeys
  7. 从2D到3D 开发者讲述“街霸V”的美术秘笈
  8. Macaca简单入门
  9. 说文解字 —— 拆字
  10. java 同音字_pinyin: The high performance pinyin tool for java.(java 高性能中文转拼音工具。支持同音字。)...
  11. 网页视频、flash打不开或无法播放的解决方法
  12. 图像处理中的高斯滤波器
  13. MySQL设计成一维数据库_mySQL教程 第1章 数据库设计
  14. php转调页面,转调踏莎行上巳道中作
  15. 【生信分析】基于TCGA肿瘤数据进行基因共表达网络分析
  16. 市场调研-前交叉韧带(ACL)重建市场现状及未来发展趋势
  17. Linux就这个范儿 第13章 打通任督二脉
  18. 计算机毕业设计php_thinkphp_vue的校园论坛网站
  19. 百度近年来主要算法2017
  20. asm路径出现DB_UNKNOWN

热门文章

  1. html5新增graph,Qunee for HTML5
  2. 中移4G模块-ML302-OpenCpu开发-HTTP
  3. 选择多级分类_② 供应商管理(分类、评估、选择、绩效、集成、供应商过多的对策、多级供应商管理)...
  4. Mac Vmware Fusion在虚拟机中共享文件夹
  5. python取两个列表的并集、交集、差集
  6. java调用linux命令
  7. Tensorflow federal learning 安装
  8. php对json数据处理,在PHP中处理JSON的后期数据
  9. djanjo 使用a标签跳转_djangoGETPOST用法以及点击a标签和form表单跳转的类型取参等...
  10. 计算机系统高级设置在哪里,Win7系统高级设置在哪里