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

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)