掌桥专利:专业的专利平台
掌桥专利
首页

一种基于JSON的二进制数据处理方法、系统及设备

文献发布时间:2023-06-19 19:32:07


一种基于JSON的二进制数据处理方法、系统及设备

技术领域

本发明涉及一种信息数据处理技术领域,更具体地说,它涉及一种基于JSON的二进制数据处理方法、系统及设备。

背景技术

JSON是一种轻量且简洁的数据交换格式,支持文本编码,与XML相比较,更易于阅读和传输,更易于机器解析和生成,现已广泛应用在各种数据描述场景中。

嵌入式设备的数据通信基于串口,由于硬件运算和通信带宽资源的限制,无法支持JSON协议量级的数据,基于二进制的数据帧是嵌入式设备对外通信的唯一方式。基于二进制的数据通信方式虽然具有数据紧凑且效率高的优点,但存在可读性差和不易文本表达的缺点。

故此基于二进制的通信协议帧数据可读性差和协议帧格式无法用文本描述,使得现有技术在二进制通信协议的调试和测试阶段需要耗费大量的时间,这导致用户的开发软件的效率降低。

发明内容

本发明为了解决现有技术在二进制通信协议的调试和测试阶段需要耗费大量的时间,导致用户的开发软件的效率降低的技术问题,本发明的目的是提供一种基于JSON的二进制数据处理方法、系统及设备,本发明支持使用表达能力较强的JSON协议对二进制数据帧的帧属性以及帧字段标识进行描述,根据二进制数据帧的组成字段为帧字段标识增加了数值约束条件,使得用于描述二进制数据通信协议的JSON协议框架具备自动测试的效果,从而使得用户在使用JSON协议进行业务逻辑处理时具备自动测试和调试的作用,以此提高用户的软件开发效率。

本发明的上述技术目的是通过以下技术方案得以实现的:

本申请的第一方面,提供了一种基于JSON的二进制数据处理方法,方法包括:

根据二进制数据通信协议帧的帧属性,生成用于描述二进制数据通信协议的JSON协议框架,其中JSON协议框架包含帧名字标识、帧方向标识和帧字段标识;

根据二进制数据帧的组成字段逐一配置所述帧字段标识的单个字段属性,其中单个字段属性包括名字字段的唯一性、长度字段所占的字节数以及规则字段的数值约束。

在一种实施方案中,所述帧字段标识是由多个单个字段构成的数组,其中多个单个字段之间的名字互异。

在一种实施方案中,所述名字字段的唯一性包括:在名字首字母大写时,所述二进制数据帧转换为JSON协议框架时字段可见;或者,在名字首字母小写时,所述二进制数据帧转换为所述JSON协议框架时字段不可见。

在一种实施方案中,所述长度字段所占的字节数包括:在长度为整数时,所述长度字段占用字节数,和/或,在长度为浮点数时,所述长度字段占用位数。

在一种实施方案中,所述规则字段包括固定值规则、离散值规则、有效范围规则、帧长计算规则、单位转换规则、字段重复规则以及校验值规则。

在一种实施方案中,所述固定值规则的数值约束由第一字符和一个固定数值组成,其中第一字符表示固定值规则的数值等于固定数值;

所述离散值规则的数值约束由多个第二字符和多个固定数值组成,其中第二字符表示离散规则的数值为枚举多个固定数值中的任意一个或多个;

所述有效范围规则的数值约束由第三字符和两个固定数值组成,其中第三字符表示有效范围规则的取值范围处于两个固定数值之间,且两个固定数值不等;

所述帧长计算规则的数值约束由第四字符和两个固定数值组成,其中第四字符表示帧长计算规则的数值为第一个固定数值到第二个固定数值的长度总和。

在一种实施方案中,所述单位转换规则的数值约束由第五字符和固定数值组成,其中第五字符表示需要进行乘以固定数值的运算;

所述字段重复规则的数值约束由第六字符和固定数值组成,其中第六字符表示字段值后的固定数值个字段需要重复,重复个数为固定数值个字段对应的数值;

所述校验值规则包括CRC校验或单字节的异或校验的校验和。

在一种实施方案中,所述帧方向标识的方向包括输入、输出以及输入输出三个方向。

本申请的第二方面,提供了一种基于JSON的二进制数据处理系统,系统包括:

帧处理单元,用于根据二进制数据通信协议帧的帧属性,生成用于描述二进制数据通信协议的JSON协议框架,其中JSON协议框架包含帧名字标识、帧方向标识和帧字段标识;

字段处理单元,用于根据二进制数据帧的组成字段逐一配置所述帧字段标识的单个字段属性,其中单个字段属性包括名字字段的唯一性、长度字段所占的字节数以及规则字段的数值约束。

本申请的第三方面,提供了一种电子设备,所述电子设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的计算机程序,其中所述计算机程序被所述处理器执行时,实现如本申请的第一方面中任一项所述的一种基于JSON的二进制数据处理方法的步骤。

与现有技术相比,本发明具有以下有益效果:

本申请提供的基于JSON的二进制数据处理方法,支持使用表达能力较强的JSON协议对二进制数据帧的帧属性以及帧字段标识进行描述,根据二进制数据帧的组成字段为帧字段标识增加了数值约束条件,使得用于描述二进制数据通信协议的JSON协议框架具备自动测试的效果,从而使得用户在使用JSON协议进行业务逻辑处理时具备自动测试和调试的作用,以此提高用户的软件开发效率。

此外,本申请还提供了一种基于JSON的二进制数据处理系统及电子设备,其技术效果与上述处理方法的技术效果相对应,这里不再赘述。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本申请实施例提供的一种基于JSON的二进制数据处理方法的流程示意图;

图2为本申请实施例提供的一种基于JSON的二进制数据处理系统的原理框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

JSON是一种轻量且简洁的数据交换格式,支持文本编码,与XML相比较,更易于阅读和传输,更易于机器解析和生成,现已广泛应用在各种数据描述场景中。

嵌入式设备的数据通信基于串口,由于硬件运算和通信带宽资源的限制,无法支持JSON协议量级的数据,基于二进制的数据帧是嵌入式设备对外通信的唯一方式。基于二进制的数据通信方式虽然具有数据紧凑且效率高的优点,但存在可读性差和不易文本表达的缺点。

故此基于二进制的通信协议帧数据可读性差和协议帧格式无法用文本描述,使得现有技术在二进制通信协议的调试和测试阶段需要耗费大量的时间,这导致用户的开发软件的效率降低。故此,本申请实施例提供了一种基于JSON的二进制数据处理方法,支持使用表达能力较强的JSON协议对二进制数据帧的帧属性以及帧字段标识进行描述,根据二进制数据帧的组成字段为帧字段标识增加了数值约束条件,使得用于描述二进制数据通信协议的JSON协议框架具备自动测试的效果,从而使得用户在使用JSON协议进行业务逻辑处理时具备自动测试和调试的作用,以此提高用户的软件开发效率。

下面将对本申请实施例提供的描述方法进行详细的解释,请参考图1,图1为本申请实施例提供的一种基于JSON的二进制数据处理方法的流程示意图;如图1所示,方法包括以下步骤:

S110,根据二进制数据通信协议帧的帧属性,生成用于描述二进制数据通信协议的JSON协议框架,其中JSON协议框架包含帧名字标识、帧方向标识和帧字段标识;

S120,根据二进制数据帧的组成字段逐一配置所述帧字段标识的单个字段属性,其中单个字段属性包括名字字段的唯一性、长度字段所占的字节数以及规则字段的数值约束。

具体的,在步骤S110中,根据二进制数据通信协议帧的用途明确帧的名字及其输入输出方向,即帧属性,编写二进制数据帧的JSON协议框架,其框架JSON描述示例为:{“name”:名字,“direction”:方向,“fields”:字段。即步骤S110是用于描述二进制的数据帧的整体属性。

作为本领域技术人员的公知常识,二进制协议实际上为一串字节流,通常包括消息头(header)和消息体(body),消息头的长度固定,包括了消息体的长度,这样就能够从数据流中解析出一个完整的二进制数据。故此,在步骤S120中,通过二进制数据帧的组成字段逐一完善帧字段标识的单个字段属性,从而使得单个字段的名字的唯一性、长度所占的字节数以及规则的数值约束得到描述,使得二进制数据帧具备自动测试的效果,使得用户在使用JSON协议进行业务逻辑处理时具备自动测试和调试的作用,从而提高了用户的软件开发效率。以一个具体的二进制通信数据帧对上述过程加以说明,二进制帧用于对外输出航迹数据,当然还可以输出别的类型数据,本申请实施例不做具体限定,二进制数据帧由8个字段构成,各个字段的详细情况如下表1所示:

表1二进制数据帧的组成字段表

进一步地,对每个组成字段进行JSON转换可以得到其JSON协议框架的全部属性为:

/>

上述JSON协议框架的属性中:name即为该二进制帧的名字frame_trail,direction为帧方向OUT标识输出,fields描述二进制帧的各个字段,它是一个数组,这三者组合在一起用于对应此二进制帧的整体属性。下面仅以二进制帧的第一个帧头字段进行说明,它在JSON协议框架描述为{"name":"header","size":2,"rule":"=0xABAB"},其中name表示为该字段的名字header,其具有唯一性,各个字段不可重复,size表示该字段的长度2字节,rule表示它为固定值0xABAB,后面length对应二进制帧的长度字段,type对于类型字段,num_flag对于航迹个数字段的BIT15,num对应航迹个数字段的BIT14-BIT0,height对应目标高度字段,crc对应CRC校验字段。

应说明的是,在完成对数据帧的字段增加了可自定义的约束条件后,还需将数据发送出去,例如,步骤301,用户按照项目的业务逻辑对JSON协议进行处理,将JSON数据转至步骤302;

步骤302,依据二进制数据帧的JSON描述对JSON数据进行检验,验证无误后按规则字段的数值约束转换为对应的二进制数据帧,转至步骤303;

步骤303,对二进制数据进行字节发送处理。

下面结合上述表1的二进制数据帧对上述过程加以说明,用户处理完业务逻辑后得到JSON数据为"frame_trail":{"header":0xABAB,"length":9,"type":0xAB01,"num_flag":1,"num":1,"height":500,"crc":0x3A},基于上述实施例提供的JSON描述方法中的规则字段的约束条件可以对其进行数据验证,验证无误后可以得出其二进制数据帧为ABAB00 09AB 0180 01 01F4 3A,最后将确认无误的字节通过执行二进制数据帧的底层处理逻辑发送出去,需要说明的是,上述业务逻辑的处理、依据二进制数据帧的JSON描述对JSON数据进行检验、、数据的格式转换以及对二进制数据进行字节发送处理都是本领域技术人员的常规技术,故此不做多余的叙述。

在一个实施例中,所述帧字段标识是由多个单个字段构成的数组,其中多个单个字段之间的名字互异。

在本实施例中,fields是一个数组,数组内包含二进制帧的各个字段描述,具体的,请参考上述实施例中的JSON协议框架的描述中的fields示例。

在一个实施例中,所述名字字段的唯一性包括:在名字首字母大写时,所述二进制数据帧转换为JSON协议框架时字段可见;或者,在名字首字母小写时,所述二进制数据帧转换为所述JSON协议框架时字段不可见。

本实施例中,名字字段的首字母为大写或小写的所带来的字段可见或不可见,是本领域技术人员的常规技术手段,不做多余的赘述。

在一个实施例中,所述长度字段所占的字节数包括:在长度为整数时,所述长度字段占用字节数,和/或,在长度为浮点数时,所述长度字段占用位数。

在一个实施例中,所述规则字段包括固定值规则、离散值规则、有效范围规则、帧长计算规则、单位转换规则、字段重复规则以及校验值规则。

作为一些具体的实施例,所述固定值规则的数值约束由第一字符和一个固定数值组成,其中第一字符表示固定值规则的数值等于固定数值;示例性的,固定值规则的格式为“=NUM”,由单个符号“=”和固定数值组成,即第一字符为“=”,当然还可以为别的字符,本实施例不做限定,固定值规则的数值约束表示该字段为固定值NUM。

所述离散值规则的数值约束由多个第二字符和多个固定数值组成,其中第二字符表示离散规则的数值为枚举多个固定数值中的任意一个或多个;示例性的,离散值规则的格式为“|NUM1|NUM2”,由多个符号“|”和固定数值组成,即第二字符为“|”,当然还可以为别的字符,本实施例不做限定,离散值规则的数值约束表示该字段为枚举值NUM1或NUM2。

所述有效范围规则的数值约束由第三字符和两个固定数值组成,其中第三字符表示有效范围规则的取值范围处于两个固定数值之间,且两个固定数值不等;示例性的,有效范围规则的格式为“[NUM1,NUM2]”,由符号“[”、“]”、“,”和固定数值组成,即第三字符包括“[”、“]”、“,”,当然还可以为包括别的字符,本实施例不做限定,有效范围规则的数值约束表示该字段的取值范围是NUM1~NUM2。

所述帧长计算规则的数值约束由第四字符和两个固定数值组成,其中第四字符表示帧长计算规则的数值为第一个固定数值到第二个固定数值的长度总和。示例性的,帧长计算规则的格式为“$NUM1:NUM2”,由符号“$”、“:”和固定数值组成,即第四字符包括“$”、“:”,当然还可以包括别的字符,本实施例不做限定,帧长计算规则的数值约束表示该字段值为第NUM1个字段到第NUM2个字段的长度总和。

作为一些具体的实施例,所述单位转换规则的数值约束由第五字符和固定数值组成,其中第五字符表示需要进行乘以固定数值的运算;示例性的,单位转换规则的格式为“*NUM”,由符号“*”和固定数值组成,即第五字符为“*”,当然还可以为包括别的字符,本实施例不做限定,单位转换规则的数值约束表示该字段值需进行乘NUM换算。

所述字段重复规则的数值约束由第六字符和固定数值组成,其中第六字符表示字段值后的固定数值个字段需要重复,重复个数为固定数值个字段对应的数值;示例性的,字段重复规则的格式为“:NUM”,由符号“:”和固定数值组成,即第六字符为“:”,当然还可以为别的字符,本实施例不做限定,字段重复规则的数值约束表示该字段值后的NUM个字段需要重复,重复个数为该字段数值。

所述校验值规则包括CRC校验或单字节的异或校验的校验和。示例性的,校验值规则的格式为“@TYPE$NUM1:NUM2”,由符号“@”、“$”、“:”和固定数值组成,表示该字段值为第NUM1字段到第NUM2字段的校验算法为TYPE的校验和,TYPE可以为单字节的异或校验,或指定算法的CRC32校验等。

在一实施例中,所述帧方向标识的方向包括输入、输出以及输入输出三个方向。在本实施例中,方向包括输入、输出以及输入输出三个可选项,是本领域技术人员的公知常识不做多余的叙述。

请参考图2所示,图2为本申请实施例提供的一种基于JSON的二进制数据处理系统的原理框图,如图2所示,系统包括:

帧处理单元210,用于根据二进制数据通信协议帧的帧属性,生成用于描述二进制数据通信协议的JSON协议框架,其中JSON协议框架包含帧名字标识、帧方向标识和帧字段标识;

字段处理单元220,用于根据二进制数据帧的组成字段逐一配置所述帧字段标识的单个字段属性,其中单个字段属性包括名字字段的唯一性、长度字段所占的字节数以及规则字段的数值约束。

可见,上述实施例提供的一种基于JSON的二进制数据处理系统,支持使用表达能力较强的JSON协议对二进制数据帧的帧属性以及帧字段标识进行描述,根据二进制数据帧的组成字段为帧字段标识增加了数值约束条件,使得用于描述二进制数据通信协议的JSON协议框架具备自动测试的效果,从而使得用户在使用JSON协议进行业务逻辑处理时具备自动测试和调试的作用,以此提高用户的软件开发效率。

本发明再一个实施例中,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述实施例所述的一种基于JSON的二进制数据处理方法的步骤。处理器可能是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor、DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行计算机存储介质内一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于执行基于JSON的二进制数据处理方法的操作。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于数据处理的系统性红斑狼疮认证方法及相关设备
  • 一种伊蚊监测数据处理方法、装置、系统和计算机设备
  • 一种数据处理方法、设备、系统和介质
  • 一种基于json传输二进制数据的方法、装置和设备
  • 一种基于JSON的ETL工具引擎处理数据的方法及ETL数据处理系统
技术分类

06120115939062