UDP端口接收到的字节流如何转为QJsonObject、QJsonArray的方法

2023-11-21 15:44

本文主要是介绍UDP端口接收到的字节流如何转为QJsonObject、QJsonArray的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//配置应答--检测点设置写文件if(p9==0x03){//需要注意:json对象中的[]应转成JsonArray,{}应转成JsonObject,p10是json字符串QJsonDocument jsonDocument = QJsonDocument::fromJson(p10);//从传入的json字符串中生成一个json文件QJsonObject convertedJsonObject = jsonDocument.object();//从json文件中转成json对象QJsonArray p_Object = convertedJsonObject["pointsArray"].toArray();//从json对象中取到jsonArrayfor(int i=1;i<=SUPPORTED_MAX_POINTS_PERCAMERA;i++){paramsPoint point;//根据接收的修改后的配置文件创建一个类并更新QJsonObject p_sub_Object = p_Object.at(i-1).toObject();point.setX(p_sub_Object["x"].toInt());//设置主检测点坐标xpoint.setY(p_sub_Object["y"].toInt());//设置主检测点坐标ypoint.setName(p_sub_Object["name"].toString());//设置检测点名称point.setValid(p_sub_Object["valid"].toInt());//设置主检测点是否有效point.setSubValid(p_sub_Object["subvalid"].toInt());//设置辅检测点是否有效// 获取subpoint对象paramsSubPoint params_sub_point;QJsonObject sub_point_Object = p_sub_Object["subpoint"].toObject();params_sub_point.setX(sub_point_Object["x"].toInt());params_sub_point.setY(sub_point_Object["y"].toInt());point.setSubpoint(params_sub_point);//设置辅检测点:subpoint// 获取Channel4U对象params4UDirection params_chnnel_4u;QJsonObject chnnel_4u_Object = p_sub_Object["channel4U"].toObject();params_chnnel_4u.setChannel(chnnel_4u_Object["channel"].toInt());params_chnnel_4u.setDirection(chnnel_4u_Object["direction"].toInt());point.setChannel4U(params_chnnel_4u);//设置4U通道:Channel4Upoint.setChannelNo(p_sub_Object["channelNo"].toInt());//设置通道号// 获取PointType对象paramsChannelType params_PointType;QJsonObject ChannelType_Object = p_sub_Object["pointtype"].toObject();params_PointType.setGoChannel(p_sub_Object["go"].toInt(),p_sub_Object["goEN"].toInt());params_PointType.setLeftChannel(p_sub_Object["left"].toInt(),p_sub_Object["leftEN"].toInt());params_PointType.setLeftChannel(p_sub_Object["right"].toInt(),p_sub_Object["rightEN"].toInt());point.setPointtype(params_PointType);//设置检测点类型:pointTypepoint.setRedLightX(p_sub_Object["redlightx"].toInt());//红灯坐标xpoint.setRedLightY(p_sub_Object["redlighty"].toInt());//红灯坐标ypoint.setSpecValid(p_sub_Object["specvalid"].toInt());//帧差轮廓专用点是否有效paramsSpecPoint params_spec_point;QJsonObject spec_point_Object = p_sub_Object["specpoint"].toObject();params_spec_point.setX(spec_point_Object["x"].toInt());params_spec_point.setX(spec_point_Object["y"].toInt());point.setSpecpoint(params_spec_point);//设置专用点坐标:spec_pointpoint.setQueueValid(p_sub_Object["queue"].toInt());//设置是否计算排队长度point.setCheckmethod(p_sub_Object["checkmethod"].toInt());//设置检车算法point.setGreenLightX(p_sub_Object["greenlightx"].toInt());//设置绿灯坐标xpoint.setGreenLightY(p_sub_Object["greenlighty"].toInt());//设置绿灯坐标ypoint.setGreenLessInterval(p_sub_Object["greenLessInterval"].toInt());//设置绿损间隔gCarDetectorParams.configParams.getCamera(camId)->setPoint(i,point);//依次更新各检测点的参数}gCarDetectorParams.saveparam();//最后更新配置文件}

这篇关于UDP端口接收到的字节流如何转为QJsonObject、QJsonArray的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403325

相关文章

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff