本发明涉及数据处理,具体而言,特别涉及一种基于java的高效可配置类对象与字节流编解码转换的方法。
背景技术:
1、当前物联网设备应用层协议包括mqtt、coap、rest/http等多种协议,但是应用层下传输组包都是基于字节流,比如:协议格式为:“包头 + 命令码 + 长度 + 数据 + 校验+ 包尾“ 这种格式的,在c或者c++中可以通过定义结构体自动映射这种协议格式,但是java只有类对象没有这种转化功能,所以本发明方法就是java的类对象高效可配置的实现字节流格式编解码转化。
2、目前现有技术没有针对java的类对象高效可配置的实现字节流格式编解码转化功能,都是根据项目实际情况,对下位机字节流协议进行定制编解码功能,不可配置,效率低。现有技术在下位机字节流格式协议比较简单,没有复杂多嵌套格式下,使用 java 默认的方法设置或解析字节流每个 byte还是可行的,但是实际情况往往中大型设备的字节流格式协议非常复杂,协议中主结构多级嵌套子结构,形成主-子-子-子..形式的,并且新设备在研发期间协议不稳定,经常变动,此时现有技术明显无法高效支持这种情况,往往一个极小的变动,导致整个java主程序重构,极大降低研发效率,质量也无法保证。
3、本发明方法主要应用于物联网环境下java主应用程序接收并解析下位机设备上报字节流协议包以及下发编码字节流协议包到下位机设备的功能。主要在物联网环境下下位机设备的协议基本都是根据设备情况专门定制的,不同设备不同应用需求下,协议复杂度也不一样,导致java主应用程序在接收解码和下发编码时不断的调整协议包,并且一旦协议有变动原有程序结构都将进行大范围调整,这极大的降低了研发效率和研发质量,针对以上情况,我们需要一套高效执行,可通过注解配置修改的编解码字节流的方法,以提高物联网项目下研发效率和研发质量。
技术实现思路
1、为了弥补现有技术的不足,本发明提供了一种基于java的高效可配置类对象与字节流编解码转换的方法。本发明解决中大型设备在物联网应用中,通过配置,完成字节流协议编解码高效转化的功能,并且能扩展适用大部分字节流格式协议设备。
2、本发明是通过如下技术方案实现的:一种基于java的高效可配置类对象与字节流编解码转换的方法,包括注解配置模块、数据处理器和类型转换工具,
3、注解配置模块用于定义创建专用注解类@dataparser,注解类@dataparser包括通过开放如下关键属性达到灵活可配置功能;其中通过using属性将配置的对象指定到合适的数据处理器;
4、数据处理器将接收的字节流按照注解配置模块配置的属性进行解析转换成java标准对象;将java标准对象按照注解配置模块配置的属性编码成下位机可识别字节流;其中数据转换封装为类型转换工具;
5、类型转换工具提供字节转换整型类型、长整类型、短整类型、双精度浮点数、字符类型;同时提供整型类型、长整类型、短整类型、双精度浮点数、字符类型转换成byte字节;
6、数据处理器的工作过程具体包括如下步骤:
7、s1、根据定义的编解码对象循环解析对象的所有字段和注解;
8、s2、判断字段注解是否是数组;
9、s3、如果不是数组,进入步骤s8;
10、s4、如果是数组,循环处理数组中的对象的所有字段和注解;
11、s5、对每个字段按照注解进行解析和类型转换;
12、s6、如果数组未结束,循环到步骤s4;
13、s7、如果数组结束,则组合对象;
14、s8、处理数据;
15、s9、按照注解进行解析和类型转换;
16、s10、组合对象;
17、s11、流程结束。
18、作为优选方案,模块配置的属性包括order排序、length 长度。
19、作为优选方案,通过注解配置模块,定义编解码对象,具体包括以下关键属性:field 字节流协议中的字段 类型 string;order 排序,对应字节流协议中的字段顺序 类型 int ;length 长度,对应字节流协议中的协议总长度 类型 int;isarray 是否数组,对应字节流协议中是否存在嵌套子协议 类型 boolean; arraylength子协议长度,对应字节流协议中的子协议长度 类型 int;using数据处理器,处理协议转化的处理类 类型datahandler。
20、本发明由于采用了以上技术方案,与现有技术相比使其具有以下有益效果:本发明是可配置以及支持复杂多级嵌套编解码,通过研发java注解类以及不同的数据处理器,实现可配置以及支持复杂多级嵌套编解码。解决了现有使用 java 默认的方法设置或解析字节流每个 byte方法所带来的低效问题,从技术角度提高了物联网应用研发的稳定性,极大提高了研发效率。
21、本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
1.一种基于java的高效可配置类对象与字节流编解码转换的方法,其特征在于, 包括注解配置模块、数据处理器和类型转换工具,
2.根据权利要求1所述的一种基于java的高效可配置类对象与字节流编解码转换的方法,其特征在于,所述模块配置的属性包括order排序、length 长度。
3.根据权利要求1所述的一种基于java的高效可配置类对象与字节流编解码转换的方法,其特征在于,通过注解配置模块,定义编解码对象,具体包括以下关键属性:field 字节流协议中的字段 类型 string;order 排序,对应字节流协议中的字段顺序 类型 int ;length 长度,对应字节流协议中的协议总长度 类型 int;isarray 是否数组,对应字节流协议中是否存在嵌套子协议 类型 boolean; arraylength子协议长度,对应字节流协议中的子协议长度 类型 int;using数据处理器,处理协议转化的处理类 类型 datahandler。