json数据的压缩传输方法、装置、设备及存储介质
技术领域
1.本发明涉及数据处理技术领域,尤其涉及一种json数据的压缩传输方法、装置、设备及存储介质。
背景技术:2.在物联网领域中,采用json格式作为物联网终端之间的数据传输格式,具有处理灵活、兼容性好和易于理解的特点。然而,物联网终端对接收数据包通常有大小的限制,故通常无法直接接收原始的json数据内容。因此,对json数据进行压缩传输,对提升物联网终端之间的数据传输效率具有重要意义。
3.目前,现有的json数据的压缩传输方法,通常采用常规的压缩方法,例如,zip方法等,对待传输的json数据进行压缩,再对压缩后的数据进行传输。然而,物联网终端的处理能力通常有限,无法支持常规压缩方法的实现,且常规的压缩方法会带来额外的数据开销。
技术实现要素:4.本发明提供了一种json数据的压缩传输方法、装置、设备及存储介质,可以克服终端处理能力有限的限制,在降低待传输json数据的数据大小的同时,避免额外的数据开销,可以实现对不同数据类型的json数据的有效压缩,可以提升场景适用性。
5.根据本发明的一方面,提供了一种json数据的压缩传输方法,包括:
6.获取待传输json数据,所述待传输json数据包括至少一个键值对;
7.获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,并根据各所述键值对中键值对应的数据类型,获取所述键值对应的二进制数据;
8.根据各所述键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取所述待传输json数据对应的二进制压缩数据,并发送所述二进制压缩数据到目标终端。
9.根据本发明的另一方面,提供了一种json数据的压缩传输装置,包括:
10.待传输json数据获取模块,用于获取待传输json数据,所述待传输json数据包括至少一个键值对;
11.二进制数据获取模块,用于获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,并根据各所述键值对中键值对应的数据类型,获取所述键值对应的二进制数据;
12.二进制压缩数据发送模块,用于根据各所述键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取所述待传输json数据对应的二进制压缩数据,并发送所述二进制压缩数据到目标终端。
13.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
14.至少一个处理器;以及
15.与所述至少一个处理器通信连接的存储器;其中,
16.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的json数据的压缩传输方法。
17.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的json数据的压缩传输方法。
18.本发明实施例的技术方案,通过获取包括多个键值对的待传输json数据,并获取各键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,进而根据各键值对中键值对应的数据类型,获取键值对应的二进制数据;进一步的,根据各键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取待传输json数据对应的二进制压缩数据,并发送二进制压缩数据到目标终端;通过根据待传输json数据中各键值对的键值对应的数据类型,对键值进行二进制数据转换,可以克服终端处理能力有限的限制,在降低待传输json数据的数据大小的同时,避免额外的数据开销,可以实现对不同数据类型的json数据的有效压缩,可以提升场景适用性。
19.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是根据本发明实施例一提供的一种json数据的压缩传输方法的流程图;
22.图2a是根据本发明实施例二提供的一种json数据的压缩传输方法的流程图;
23.图2b是根据本发明实施例二提供的一种json数据的压缩传输方法的流程示意图;
24.图3是根据本发明实施例三提供的一种json数据的压缩传输装置的结构示意图;
25.图4是实现本发明实施例的json数据的压缩传输方法的电子设备的结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备
不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.实施例一
29.图1为本发明实施例一提供了一种json数据的压缩传输方法的流程图,本实施例可适用于对待传输的json格式数据进行数据压缩,以降低传输数据大小的情况,该方法可以由json数据的压缩传输装置来执行,该json数据的压缩传输装置可以采用硬件和/或软件的形式实现,该json数据的压缩传输装置可配置于电子设备中,典型的,电子设备可以是终端设备或者服务器。如图1所示,该方法包括:
30.s110、获取待传输json数据,所述待传输json数据包括至少一个键值对。
31.其中,待传输json数据,可以是json格式的物联网数据,例如,环境监测数据、交通数据和设备控制数据等。json格式,可以采用文本格式来存储和表示数据,便于人阅读和编写,且易于机器解析和生成。通过采用json格式进行物联网终端之间的数据传输,可以有效提升数据传输效率。
32.在本实施例中,待传输json数据可以包括多个由键名和键值组成的键值对,即jsonobject对象。其中,不同键值对中的键值可以对应不同的数据类型,例如,浮点型、字符串类型等。可选的,一个键值可以由多个元素或者键值对组成。
33.s120、获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,并根据各所述键值对中键值对应的数据类型,获取所述键值对应的二进制数据。
34.在本实施例中,可以预先为每个键名设置对应的数字编号,以及每个数据类型对应的数字编号;由此,在获取到键名之后,可以基于该键名查找得到匹配的数字编号,以获取对应的键编号;以及在获取到键值对应的数据类型之后,可以基于该数据类型查找得到匹配的数字编号,以获取匹配的数据类型编号。
35.其中,数据类型可以包括boolean类型、byte类型、短整型(short)、整形(int)、长整型(long)、字符串类型(string)、键值对类型(jsonobject)、数组类型(jsonarray)和空值类型(null)中的至少一项。
36.需要说明的是,当键值对应不同的数据类型时,其表现为不同的数据形式。例如,当数据类型为boolean类型时,键值为0或者1;当数据类型为短整型,整形或者长整型时,键值为整形数字,区别在于对应的字节长度不同;或者,当数据类型为数组类型时,键值可以由多个元素组成,且每个元素可以对应不同的数据类型。由此,可以根据键值的数据形式,确定键值对应的数据类型。
37.进一步的,在确定键值对应的数据类型之后,可以基于数据类型对应的预先设置的二进制转换规则,将键值的数据内容转换为对应的二进制数据。例如,当数据类型为byte类型、短整型、整形或者长整型时,可以直接对键值进行二进制转换,以获取对应的二进制数据;或者,当数据类型为boolean类型时,可以判断键值对应0还是1,进而将判断结果作为对应的二进制数据;或者,当数据类型为空值类型时,可以确定二进制数据为空。
38.s130、根据各所述键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取所述待传输json数据对应的二进制压缩数据,并发送所述二进制压缩数据到目标终端。
39.具体的,可以首先对每个键值对中键名对应的键编号和键值对应的数据类型匹配的数据类型编号进行二进制转换,以获取每个键值对对应的二进制键编号和二进制数据类型编号;之后,将每个键值对对应的二进制键编号、二进制数据类型编号和键值对应的二进制数据进行组合,以获取每个键值对对应的二进制数据。最后,将每个键值对对应的二进制数据进行组合,以获取待传输json数据对应的二进制压缩数据,并将该二进制压缩数据发送到该待传输json数据的接收终端,即目标终端。
40.其中,目标终端,可以是智能设备(例如,智能电视、智能空调等)、车机设备或者服务器等。在本实施例中,对目标终端的类型不作具体限定。
41.可选的,在对键值编号和数据类型编号进行二进制转换之后,其对应的数据长度,可以根据实际场景进行自适应设置。例如,二进制键值编号对应的数据长度可以是2字节,而二进制数据类型编号对应的数据长度可以是1字节。此外,对于对应不同数据类型的键值,还可以预先设置对应的二进制数据的长度,例如,对于boolean类型的键值,其对应的二进制数据的长度可以为1字节;或者,对于long类型的键值,其对应的二进制数据的长度可以为8字节。其中,当转换后的二进制数据的数据长度小于预先设置的字节长度时,可以采用设定数字(例如,0)进行补充。
42.上述设置的好处在于,可以规范二进制压缩数据的数据格式,可以提升二进制压缩数据的数据解压缩效率。
43.可选的,针对待传输json数据的各键值对(jsonobject元素)或者键值(jsonarray元素),其对应的二进制数据可以采用数据块形式进行描述。其中,jsonobject元素数据块可以包括键编号(例如,2字节)、数据类型编号(例如,1字节)和键值(格式依数据类型值确定)三部分;jsonarray元素数据块可以包括数据类型编号(例如,1字节)和元素内容(格式依数据类型值确定)两部分。
44.可选的,目标终端在接收到二进制压缩数据之后,可以采用与二进制数据压缩相反的逻辑,对二进制压缩数据进行反向解析,以获取原始的json数据。
45.在本实施例的一个具体的实施方式中,在对json数据进行二进制压缩时,针对每一个键值对,可以首先将键名转换为设定字节长度(例如,2字节)的二进制键编号;然后,获取各键值对应的数据类型匹配的数据类型编号,并将该数据类型编号转换为设定字节长度(例如,1字节)的二进制数据类型编号;进一步的,针对不同数据类型的键值,将其转换为对应不同的设定字节长度的二进制数据。最终,对二进制键编号、二进制数据类型编号和键值对应的二进制数据进行组合,可以获取每个键值对对应的二进制数据块。
46.由此,在对二进制压缩数据进行反向解析时,针对每一个数据块,可以首先读取2字节的数据,并将该数据转换为十进制数据,以获取键编号,进而可以根据该键编号获取键名。然后,可以继续读取1字节的数据,并根据该数据获取键值对应的数据类型;最终根据获取的数据类型,对当前数据块的剩余字节进行反向解析,以获取键值内容。最后,根据获取的键名和键值,即可获取当前数据块对应的键值对。
47.本发明实施例的技术方案,通过获取包括多个键值对的待传输json数据,并获取各键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,进而根据各键值对中键值对应的数据类型,获取键值对应的二进制数据;进一步的,根据各键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,
获取待传输json数据对应的二进制压缩数据,并发送二进制压缩数据到目标终端;通过根据待传输json数据中各键值对的键值对应的数据类型,对键值进行二进制数据转换,可以克服终端处理能力有限的限制,在降低待传输json数据的数据大小的同时,避免额外的数据开销,可以实现对不同数据类型的json数据的有效压缩,可以提升场景适用性。
48.在本实施例的一个可选的实施方式中,获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,可以包括:
49.根据预建立的键名与键编号之间的映射关系,获取各所述键值对中键名对应的键编号;
50.获取各所述键值对中键值对应的数据类型,并根据各所述键值对中键值对应的数据类型,以及预建立的数据类型与数据类型编号之间的映射关系,获取各所述键值对中键值对应的数据类型匹配的数据类型编号。
51.其中,键编号和数据类型编号,可以是十进制的数字编号。在本实施例中,可以预建立键名与键编号之间的映射关系,以及数据类型与数据类型编号之间的映射关系。由此,在获取到键值对的键名和键值对应的数据类型之后,可以基于预建立的映射关系,查找得到键名对应的键编号,以及数据类型对应的数据类型编号。
52.在一个具体的例子中,键名与键编号之间的映射关系可以如表1所示,数据类型与数据类型编号之间的映射关系可以如表2所示。其中,在设置数据类型对应的数据类型编号的同时,还可以设置不同数据类型的键值转换为二进制数据的数据长度。
53.表1键名与键编号之间的映射关系
54.json键名键编号key11key22......
55.表2数据类型与数据类型编号之间的映射关系
[0056][0057]
实施例二
[0058]
图2a为本发明实施例二提供的一种json数据的压缩传输方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施方式结合。如图2a所示,该方法包括:
[0059]
s210、获取待传输json数据,所述待传输json数据包括至少一个键值对。
[0060]
s220、获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号。
[0061]
s230、若检测到当前键值对中当前键值对应的数据类型为数组类型,则获取所述当前键值对应的元素数量,并获取所述元素数量对应的二进制元素数量数据。
[0062]
在本实施例中,在当前键值对应的数据类型为数组类型时,当前键值可以由多个数组元素组成,各数组元素可以对应不同的数据类型,例如,boolean类型、byte类型、short、int、long、string、jsonobject、jsonarray和null等。
[0063]
具体的,在对数组类型的键值进行二进制转换时,可以首先获取当前键值所包括的数组元素的数量,然后将该元素数量转换为二进制,以获取二进制元素数量数据。
[0064]
s240、获取所述当前键值中各元素对应的数据类型,并根据各所述元素对应的数据类型,获取各所述元素对应的二进制元素数据。
[0065]
具体的,在对各数组元素进行二进制转换时,可以根据每个元素对应的数据类型,确定每个元素对应的二进制转换规则,进而基于匹配的二进制转换规则对各元素进行二进制转换,以获取各元素对应的二进制元素数据。
[0066]
其中,键值和元素,可以采用相同的二进制转换规则,即二进制转换规则只与数据类型对应,并不关心转换的对象是键值还是数组元素。
[0067]
s250、根据所述元素数量对应的二进制元素数量数据和各所述元素对应的二进制元素数据,获取所述当前键值对应的二进制数据。
[0068]
具体的,在获取到元素数量对应的二进制元素数量数据和每个元素对应的二进制元素数据之后,可以对元素数量对应的二进制元素数量数据和每个元素对应的二进制元素数据依次进行连接,以获取当前键值对应的二进制数据。
[0069]
之后,可以对当前键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号进行二进制转换,以获取二进制键编号和二进制数据类型编号;进一步的,可以对二进制键编号、二进制数据类型编号和当前键值对应的二进制数据进行连接,以获取当前键值对对应的二进制数据块。
[0070]
s260、根据各所述键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取所述待传输json数据对应的二进制压缩数据,并发送所述二进制压缩数据到目标终端。
[0071]
本发明实施例的技术方案,通过获取各键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,并在检测到当前键值对中当前键值对应的数据类型为数组类型时,获取当前键值对应的元素数量,进而获取元素数量对应的二进制元素数量数据;然后,获取当前键值中各元素对应的数据类型,并根据各元素对应的数据类型,获取述元素对应的二进制元素数据;进一步的,根据元素数量对应的二进制元素数量数据和各元素对应的二进制元素数据,获取当前键值对应的二进制数据;最终,根据各键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取待传输json数据对应的二进制压缩数据,并发送二进制压缩数据到目标终端;通过在键值对应的数据类型为数组类型时,基于各元素对应的数据类型,获取各元素对应的二进制元素数据,进而获取键值对应的二进制数据,可以实现对数组类型的json数据的有效压缩,可以减少数据接收终端的流量消耗。
[0072]
在本实施例的一个可选的实施方式中,根据各所述元素对应的数据类型,获取各所述元素对应的二进制元素数据,可以包括:
[0073]
获取各所述元素对应的数据类型匹配的数据类型编号,并根据各所述元素对应的数据类型匹配的数据类型编号,获取各所述元素对应的二进制类型数据;
[0074]
根据各所述元素对应的数据类型,对各所述元素的元素内容进行二进制转换,以获取各所述元素对应的二进制内容数据;
[0075]
对各所述元素对应的二进制类型数据和对应的二进制内容数据进行组合,获取各所述元素对应的二进制元素数据。
[0076]
具体的,在对各元素进行二进制转换时,首先,获取各元素对应的数据类型,并基于预先设置的数据类型和数据类型编号之间的映射关系,确定各元素对应的数据类型匹配的十进制的数据类型编号;然后,对各十进制的数据类型编号进行二进制转换,以获取各元素对应的二进制类型数据。
[0077]
其次,根据各元素对应的数据类型,获取各元素对应的二进制内容转换规则,并基于对应的二进制内容转换规则,对各元素的元素内容进行二进制转换,以获取各元素对应
的二进制内容数据。最终,对各元素对应的二进制类型数据和二进制内容数据进行依次连接,以获取每个元素对应的二进制数据块,即二进制元素数据。
[0078]
可选的,二进制类型数据和二进制元素数量数据的数据长度可以预先设置,例如,可以是1字节。
[0079]
其中,根据各所述元素对应的数据类型,对各所述元素的元素内容进行二进制转换,以获取各所述元素对应的二进制内容数据,可以包括:
[0080]
若检测到当前元素对应的数据类型为字符串类型,则获取所述当前元素的元素内容对应的内容长度,并获取所述内容长度对应的二进制长度数据;
[0081]
对所述当前元素的元素内容进行二进制转换,获取所述当前元素的元素内容对应的二进制元素值数据;
[0082]
对所述内容长度对应的二进制长度数据和所述当前元素的元素内容对应的二进制元素值数据进行组合,获取所述当前元素对应的二进制内容数据。
[0083]
在本实施例中,当前元素对应的数据类型为字符串类型时,当前元素对应的二进制内容数据可以包括设定字节(例如,1字节)的长度数据和元素内容数据。
[0084]
具体的,首先,获取当前元素的元素内容对应的内容长度,即字符串的长度,并将该内容长度转换为二进制长度数据。然后,对字符串进行二进制转换,以获取元素内容对应的二进制元素值数据;最终,对二进制长度数据和二进制元素值数据进行依次连接,以获取当前元素对应的二进制内容数据。
[0085]
在本实施例的另一个可选的实施方式中,根据各所述元素对应的数据类型,对各所述元素的元素内容进行二进制转换,以获取各所述元素对应的二进制内容数据,可以包括:
[0086]
若检测到当前元素对应的数据类型为键值对类型,则获取所述当前元素对应的键值对数量,并获取所述键值对数量对应的二进制键值对数量数据;
[0087]
获取所述当前元素中各键值对的键名对应的二进制键名数据,以及各键值对的键值对应的二进制键值类型数据和二进制键值内容数据;
[0088]
根据所述键值对数量对应的二进制键值对数量数据、所述当前元素中各键值对的键名对应的二进制键名数据,以及各键值对的键值对应的二进制键值类型数据和二进制键值内容数据,获取所述当前元素对应的二进制内容数据。
[0089]
在一个具体的例子中,当前元素对应的数据类型为键值对类型时,当前元素可以包括多个键值对。此时,可以首先获取键值对数量,并转换为二进制键值对数量数据,进而对每个子键值对进行遍历;具体的,获取每个键值对的键名对应的二进制键名数据,以及键值对应的二进制键值类型数据和二进制键值内容数据,并对每个键值对的键名对应的二进制键名数据,以及键值对应的二进制键值类型数据和二进制键值内容数据进行依次连接,以获取每个键值对对应的二进制数据。最终,对二进制键值对数量数据和每个键值对对应的二进制数据进行依次连接,以获取当前元素对应的二进制内容数据。
[0090]
需要说明的是,键值对中的键值同样可能对应不同的数据类型,此时,可以基于上述方案对键值内容进行层层分析,直至获取到实质内容(例如,整形数据、字符串等),进而完成对键值的二进制转换。
[0091]
可选的,在检测到当前键值对应的数据类型为键值对类型时,可以先获取当前键
值对应的二进制键值对数量数据,并采用上述方案遍历当前键值对应的各键值对,以获取当前键值中各键值对对应的二进制数据。最终,将二进制键值对数量数据和每个键值对对应的二进制数据进行依次连接,以获取当前键值对应的二进制数据。
[0092]
在本实施例的一个具体的实施方式中,json数据的压缩传输方法的流程可以如图2b所示。首先,获取待传输json数据的各键值对,并迭代所有键值对。之后,针对每一个键值对,首先根据键名获取键编号,并写入键编号对应的2字节二进制键编号;然后,获取键值对应的数据类型,并根据数据类型写入1字节二进制数据类型编号。最后,根据键值对应的数据类型,对键值作不同的处理。
[0093]
其中,当键值对应的数据类型为boolean类型时,写入键值对应的判断结果,0或者1;当键值对应的数据类型为byte类型、短整型(short)、整形(int)或者长整型(long)时,直接写入键值对应的二进制数据;当键值对应的数据类型为字符串类型(string)时,可以首先获取字符串长度,并写入字符串长度对应的1字节二进制长度数据,再写入字符串对应的二进制键值内容数据;而对于浮点类型的键值,可以参照字符串类型处理;对于空值类型的键值,由于其无数据内容,故其对应的二进制数据为空。
[0094]
其次,对于键值对(jsonobject)类型的键值,可以首先写入1字节的键值对数量对应的二进制键值对数量数据;然后,迭代每一个键值对,对每一个键值对进行二进制转换操作,以获取每个键值对对应的二进制数据;最终,由二进制键值对数量数据和每个键值对对应的二进制数据组成该键值对应的二进制数据。
[0095]
此外,对于数组(jsonarray)类型的键值,可以首先获取其包括的元素数量,并写入1字节的二进制元素数量数据;然后,针对每一个元素,首先写入1字节的二进制数据类型编号,并根据每个元素对应的数据类型,对元素内容进行二进制转换,从而最终获取该键值对应的二进制数据。其中,元素对应的数据类型,也可以包括boolean类型、byte类型、short类型、int类型、long类型、string类型、jsonobject类型、jsonarray类型和null类型等。
[0096]
实施例三
[0097]
图3为本发明实施例三提供的一种json数据的压缩传输装置的结构示意图。如图3所示,该装置包括:待传输json数据获取模块310、二进制数据获取模块320和二进制压缩数据发送模块330;其中,
[0098]
待传输json数据获取模块310,用于获取待传输json数据,所述待传输json数据包括至少一个键值对;
[0099]
二进制数据获取模块320,用于获取各所述键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,并根据各所述键值对中键值对应的数据类型,获取所述键值对应的二进制数据;
[0100]
二进制压缩数据发送模块330,用于根据各所述键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,获取所述待传输json数据对应的二进制压缩数据,并发送所述二进制压缩数据到目标终端。
[0101]
本发明实施例的技术方案,通过获取包括多个键值对的待传输json数据,并获取各键值对中键名对应的键编号,以及键值对应的数据类型匹配的数据类型编号,进而根据各键值对中键值对应的数据类型,获取键值对应的二进制数据;进一步的,根据各键值对中键名对应的键编号、键值对应的数据类型匹配的数据类型编号和键值对应的二进制数据,
获取待传输json数据对应的二进制压缩数据,并发送二进制压缩数据到目标终端;通过根据待传输json数据中各键值对的键值对应的数据类型,对键值进行二进制数据转换,可以克服终端处理能力有限的限制,在降低待传输json数据的数据大小的同时,避免额外的数据开销,可以实现对不同数据类型的json数据的有效压缩,可以提升场景适用性。
[0102]
可选的,二进制数据获取模块320,包括:
[0103]
键编号获取单元,用于根据预建立的键名与键编号之间的映射关系,获取各所述键值对中键名对应的键编号;
[0104]
数据类型编号获取单元,用于获取各所述键值对中键值对应的数据类型,并根据各所述键值对中键值对应的数据类型,以及预建立的数据类型与数据类型编号之间的映射关系,获取各所述键值对中键值对应的数据类型匹配的数据类型编号。
[0105]
可选的,所述数据类型包括boolean类型、byte类型、短整型、整形、长整型、字符串类型、键值对类型、数组类型和空值类型中的至少一项。
[0106]
可选的,二进制数据获取模块320,包括:
[0107]
二进制元素数量数据获取单元,用于若检测到当前键值对中当前键值对应的数据类型为数组类型,则获取所述当前键值对应的元素数量,并获取所述元素数量对应的二进制元素数量数据;
[0108]
二进制元素数据获取单元,用于获取所述当前键值中各元素对应的数据类型,并根据各所述元素对应的数据类型,获取各所述元素对应的二进制元素数据;
[0109]
二进制数据获取单元,用于根据所述元素数量对应的二进制元素数量数据和各所述元素对应的二进制元素数据,获取所述当前键值对应的二进制数据。
[0110]
可选的,二进制元素数据获取单元,包括:
[0111]
二进制类型数据获取子单元,用于获取各所述元素对应的数据类型匹配的数据类型编号,并根据各所述元素对应的数据类型匹配的数据类型编号,获取各所述元素对应的二进制类型数据;
[0112]
二进制内容数据获取子单元,用于根据各所述元素对应的数据类型,对各所述元素的元素内容进行二进制转换,以获取各所述元素对应的二进制内容数据;
[0113]
二进制元素数据获取子单元,用于对各所述元素对应的二进制类型数据和对应的二进制内容数据进行组合,获取各所述元素对应的二进制元素数据。
[0114]
可选的,二进制内容数据获取子单元,具体用于若检测到当前元素对应的数据类型为字符串类型,则获取所述当前元素的元素内容对应的内容长度,并获取所述内容长度对应的二进制长度数据;
[0115]
对所述当前元素的元素内容进行二进制转换,获取所述当前元素的元素内容对应的二进制元素值数据;
[0116]
对所述内容长度对应的二进制长度数据和所述当前元素的元素内容对应的二进制元素值数据进行组合,获取所述当前元素对应的二进制内容数据。
[0117]
可选的,二进制内容数据获取子单元,具体用于若检测到当前元素对应的数据类型为键值对类型,则获取所述当前元素对应的键值对数量,并获取所述键值对数量对应的二进制键值对数量数据;
[0118]
获取所述当前元素中各键值对的键名对应的二进制键名数据,以及各键值对的键
值对应的二进制键值类型数据和二进制键值内容数据;
[0119]
根据所述键值对数量对应的二进制键值对数量数据、所述当前元素中各键值对的键名对应的二进制键名数据,以及各键值对的键值对应的二进制键值类型数据和二进制键值内容数据,获取所述当前元素对应的二进制内容数据。
[0120]
本发明实施例所提供的json数据的压缩传输装置可执行本发明任意实施例所提供的json数据的压缩传输方法,具备执行方法相应的功能模块和有益效果。
[0121]
需要说明的是,本实施例的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0122]
实施例四
[0123]
图4示出了可以用来实施本发明的实施例的电子设备40的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0124]
如图4所示,电子设备40包括至少一个处理器41,以及与至少一个处理器41通信连接的存储器,如只读存储器(rom)42、随机访问存储器(ram)43等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器41可以根据存储在只读存储器(rom)42中的计算机程序或者从存储单元48加载到随机访问存储器(ram)43中的计算机程序,来执行各种适当的动作和处理。在ram 43中,还可存储电子设备40操作所需的各种程序和数据。处理器41、rom 42以及ram 43通过总线44彼此相连。输入/输出(i/o)接口45也连接至总线44。
[0125]
电子设备40中的多个部件连接至i/o接口45,包括:输入单元46,例如键盘、鼠标等;输出单元47,例如各种类型的显示器、扬声器等;存储单元48,例如磁盘、光盘等;以及通信单元49,例如网卡、调制解调器、无线通信收发机等。通信单元49允许电子设备40通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0126]
处理器41可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器41的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器41执行上文所描述的各个方法和处理,例如json数据的压缩传输方法。
[0127]
在一些实施例中,json数据的压缩传输方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元48。在一些实施例中,计算机程序的部分或者全部可以经由rom 42和/或通信单元49而被载入和/或安装到电子设备40上。当计算机程序加载到ram 43并由处理器41执行时,可以执行上文描述的json数据的压缩传输方法的一个或多个步骤。备选地,在其他实施例中,处理器41可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行json数据的压缩传输方法。
[0128]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实
现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0129]
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0130]
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0131]
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0132]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
[0133]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0134]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0135]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。