一种JSON字符串传输、处理的方法及设备与流程

文档序号:14505139阅读:282来源:国知局

本申请涉及计算机领域,尤其涉及一种json字符串传输、处理的方法及设备。



背景技术:

json(javascriptobjectnotation)为ecma组织定义的轻量级文本交换协议国际标准,为一种文本协议,任何一种编程语言都可以识别和分析,目前使用的浏览器是基于http(超文本传输协定)协议和网站后台进行交互的,json字符串中的数据都是由键和值组成,json因为它的可读性和简单性,越来越成为主流的信息交换格式,例如,用户在网站注册,浏览器会向后台提交json数据:

这样后台可以比较容易通过name,password两个键(key)获取需要的值,这样的信息交换方式因为方便性,无论在网站还是移动终端都被广泛的采用。

json是一种基于字符串的数据格式,但缺点是必须把完整格式加载完成之后才能进行解析,当完整格式没有加载完成时,无法确定json已经闭合还是仍然有更多的键,因此无法解析这个不完整的字符串。例如,当获取到这样的字符串:

{

"name":"张三",

"password":123456

此时最后一个“}”没有加载完成,因此无法确定json已经闭合还是仍然有更多的键(key),所以无法解析这个不完整的字符串。

当json的数据量很大时,仍然需要将json完整加载之后才能解析,这就增加了网页或者移动端的延迟。目前通常是采用拆分数据接口的方式减少单个json的数据量,此方式工程量较大,且和项目的业务逻辑耦合严重。

申请内容

本申请的一个目的是提供一种json字符串传输、处理的方法及设备,解决现有技术中必须等json字符串完整加载之后才能解析的问题,提高了处理端的数据响应速度,提升了用户体验。

根据本申请的一个方面,提供了一种在发送端的json字符串传输的方法,该方法包括:

提取待传输的json字符串中的键和值;

根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,其中,所述json子字符串由所述键和值组成;

发送所述键值结构和json子字符串。

进一步地,上述方法中,所述键值结构为将所述json子字符串的键的值置空后的json字符串。

进一步地,上述方法中,发送所述键值结构和json子字符串包括:

发送所述键值结构;

在所述键值结构发送成功后,发送json子字符串。

进一步地,上述方法中,所述键,包括:

节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。

进一步地,将所述json字符串拆分为json子字符串之后,包括:

获取json子字符串的个数、显示顺序和体积大小中一种或任意组合的信息;

根据所获取的信息确定发送json子字符串的传输方式。

进一步地,所述传输方式包括:

将所述json子字符串按顺序依次发送;

或将所述json子字符串并行发送。

根据本申请的另一个方面,提供了一种在处理端的json字符串处理的方法,该方法包括:

接收json字符串的键值结构和json子字符串;

从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

进一步地,上述方法中,所述键值结构为将所述json子字符串的键的值置空后的json字符串;

将提取的值与所述键值结构组合成json字符串,包括:

将提取的值填充至所述键值结构中json子字符串的键的值的置空位置。

进一步地,所述键,包括:

节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。

进一步地,从接收到的json子字符串中提取值,将提取的值组合成json字符串,包括:

根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,每次组合后显示所述组合成的json字符串。

根据本申请的另一个方面,提供了一种网络接口端json字符串传输的方法,所述方法包括:

提取发送端待传输至接收端的json字符串中的键和值;

根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串;

发送所述键值结构和json子字符串至所述接收端。

根据本申请的另一个方面,提供了一种接收端json字符串处理的方法,所述方法包括:

从网络接口接收json字符串的键值结构和json子字符串;

从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串。

根据本申请的又一方面,还提供了一种json字符串传输的发送设备,所述发送设备包括:

获取装置,用于提取待传输的json字符串中的键和值;

拆分装置,用于根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,其中,所述json子字符串由所述键和值组成;

传输装置,用于发送所述键值结构和json子字符串。

进一步地,上述发送设备中,所述键值结构为将所述json子字符串的键的值置空后的json字符串。

进一步地,所述键,包括:

节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。

根据本申请的又一方面,还提供了一种json字符串显示的处理设备,所述处理设备包括:

接收装置,用于接收json字符串的键值结构和json子字符串;

合并装置,用于从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

进一步地,上述处理设备中,所述键值结构为将所述json子字符串的键的值置空后的json字符串;

所述合并装置,用于将提取的值填充至所述键值结构中json子字符串的键的值的置空位置。

进一步地,所述键,包括:

节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。

根据本申请的另一面,还提供一种网络接口端,用于:

提取发送端待传输至接收端的json字符串中的键和值;

根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串;

发送所述键值结构和json子字符串至所述接收端。

根据本申请的另一面,还提供一种接收端,用于:

从网络接口接收json字符串的键值结构和json子字符串;

从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

提取待传输的json字符串中的键和值;

根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,其中,所述json子字符串由所述键和值组成;

发送所述键值结构和json子字符串。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收json字符串的键值结构和json子字符串;

从接收到的json子字符串中提取值,将提取的值将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

本申请在发送端通过解析待传输的json字符串,得到字符串的键和值,便于后续根据键和值对所述待传输的json字符串进行准确地拆分,得到json子字符串,从而保证了每个拆分成的json子字符串的键和值的格式完整性以及子字符串的合法性;接着,根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,从而使得所拆分成的多个json子字符串的数据完整;随后,将数据键值结构和多个json子字符串传输至处理端。因此,通过上述在发送端的json字符串的传输方法,从而在保证格式完整性的前提下能够将数据量较大的json字符串拆分成多个小数据量的子字符串,同时将拆分结果中的数据键值结构和多个子字符串分步进行传输,提高了处理端的数据响应速度。

进一步地,根据节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种json子字符串的键拆分待传输的json字符串,可以避免拆分的json子字符串的数据不合理性,从而能够显著提高处理端的数据响应速度。

进一步地,评估json字符串中所拆分成的json子字符串,获取到子字符串的个数、显示顺序和体积大小中一种或任意组合的信息,判断所拆分的子字符串是否合法,并根据所获取的信息灵活选择发送json子字符串的传输方式,进而保证json子字符串的合法性,提高传输的效率。

进一步地,在处理端从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,每次组合后显示所述组合成的json字符串,直至所有提取到的值都组合完,形成格式完整的json字符串;进而保证了合并后的json字符串的格式完整性,通过渐进式的加载方式呈现数据,提高了处理端的数据响应速度及用户体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请的一实施例的拆分待传输的json字符串的示意图;

图2示出本申请一个方面的一种json字符串的传输和处理的交互流程示意图;

图3示出本申请的一实施例中json字符串的传输和处理的流程示意图;

图4示出根据本申请的又一实施例中的json字符串的传输、处理的系统模块图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

根据本申请的一个方面,提供了一种在发送端的json字符串传输的方法,该方法包括步骤s11~步骤s13:

步骤s11,提取待传输的json字符串中的键和值。

本申请一实施例中,json字符串是符合json字符串格式的,具体地,一个json字符串定义在“{}”中,只有格式完整的json的字符串才能被解析,json字符串通过键和值(key-value)的形式定义各数据类型,如一个json字符串{“a”:1},可以从其中获得键a及其对应的值,值为1。

在本申请所述的在发送端的json字符串传输的方法中,首先提取待传输的json字符串中的键和值,以便于后续根据提取的键和值对所述待传输的json字符串进行准确地拆分,得到json子字符串。

本申请一实施例中,上述提取到的待传输的json字符串中的键和值可以是json字符串是全部或部分键和值,提取到的json字符串是全部或部分键和值作为后续json子字符串的键和值,可以根据json字符串的具体情况确定,如json字符串的大小,键和值的类型等。

步骤s12,根据提取得到的键和值得到json字符串的键值结构,并将json字符串拆分为json子字符串。

其中,所述json字符串的键值结构用于供接收端根据键值结构将各json子子字符串组装成json字符串。

本申请一实施例中,可根据json字符串键和值确定json子字符串的键,根据所述值和json子字符串的键将所述待传输的json字符串拆分为json子字符串,及得到所述待传输的json字符串的键值结构,其中,所述键值结构为将所述json子字符串的键的值置空后的json字符串。

本申请一实施例中,为了保证所拆分成的多个json子字符串的格式完整性,将待传输json字符串按照json子字符串的键进行拆分,其中,json子字符串的键为根据所获取的json字符串的键和值确定的拆分方式,如json子字符串的键为节点key,则可按照节点key对待传输的json字符串进行拆分,得到多个json子字符串后,将多个json子字符串进行保存并将待传输的json字符串中每个json子字符串的值置空,得到json字符串的键值结构。可以理解,在其它具体实现中,所述键值结构的内容,只要是接收端能根据该键值结构能够将各json子字符串组装成完整的json字符串都可。

本申请实施例中,通过根据提取的键和值来对json字符串进行拆分,可以确保拆分的每个子字符串,均可以是符合json字符串格式的字符串,从而保证了每个拆分成的json子字符串的键和值的格式完整性以及子字符串的合法性,这里的json子字符串就是将一个json字符串分成多个子字符串,分出的每个子字符串仍具有完整格式,可以单独被解析的格式完整性。

在本申请一具体实施例中,如图1中示出的拆分待传输的json字符串的示意图,其中,大块json数据为待传输的json字符串,拆分器(parser)包括json子字符串的键和值,经过拆分器(parser)的拆分,得到多个json子字符串,如图1中子节点c1、子节点c2、子节点c3表示多个json子字符串,以及在将c1、c2、c3保存后,将待传输的json字符串中c1、c2、c3子节点(子字符串)中键的值(key-value)置空(置为null),得到待传输的json字符串的键值结构,即数据键值结构s1。

另外,json字符串的数据定义在“{}”内,如果最后一个“}”没有加载完成,这个json数据的格式是不合法的,当json内数据越来越庞大的时候,无法把已下载一部分的json数据进行解析,所以必须等待数据完整加载才能解析,这就增加了程序的延迟。因为json格式的限制,如果直接把json数据分块传输,此时数据是不完整的,无法解析。而通过本申请得到键值结构和json字符串的方法,可以将json数据解耦成格式完整的小数据块即json子字符串,json子字符串的数据定义在“{}”内,保证其格式完整性,处理端在接收每一个小数据块即json子字符串,将json子字符串填充至至所述键值结构后,即可独立解析并显示填充后的基本节构,无需等待其它小数据块都接收完毕后才进行一起显示,达到边接收、边处理和显示部分json字符串的效果,从而提高程序响应速度。

本申请一实施例中,在网络接口采用json字符串进行信息交换时,为了后续将完整格式的json字符串进行拆分成多个更小的但仍具有完整格式的json子字符串,即拆分成多个仍具有完整格式的json小块数据。

步骤s13,发送键值结构和json子字符串。

本申请实施例中,json字符串被处理成键值结构和子字符串后,进行发送,json字符串的键值结构比json字符串的数据量要小,如键值结构内没有json子字符串的键的值,与传输整个json子字符串相比,因为传输数据量的减少,将键值结构传输至处理端时的传输速度大幅度被提高,降低了传输数据的延迟,尤其是在数据量较大的网络接口中,进行信息交换时采用发送键值结构和json子字符串的方式,大大提高了处理端的响应速度。

此外,将json子字符串发送至处理端使得处理端对接收到的键值结构和json子字符串进行合并,显示完整的json数据内容,完成网络接口的信息交换。需要说明的是,键值结构和json子字符串的发送可并发进行,也可以按照顺序依次进行。

本申请实施例中,由于得到json字符串的键值结构和json子字符串,后续将键值结构和json子字符串分开传输到处理端后,处理端不用等到json字符串完整加载之后才能解析整个json字符串,处理端只要到等到键值结构和某个json子字符串加载完,即可解析和显示部分json字符串,从而提高了处理端的数据响应速度,提升了用户体验。

在本申请的一实施例中,在步骤s13中,发送键值结构和json子字符串具体可以包括:发送键值结构;在键值结构发送成功后,发送json子字符串。先发送没有json子字符串的键的值的键值结构,键值结构数据量较小,传输速度较快,在键值结构发送成功后,再将json子字符串进行传输,避免了若json子字符串比键值结构先发送成功需要先缓存而造成的占用数据存储空间的问题。

在本申请的一实施例中,在步骤s12中,所述的键具体可以为节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。本申请一实施例中,按照节点键(节点key)、节点键路径(节点key路径)、节点添加唯一键(节点添加uniquekey)和节点数组索引(节点数组index)四种方式中的任意一种进行拆分待传输的json字符串,能够保证json数据的合法性、传输的效率和完整性。例如,体积为1m的json字符串可以拆分成4份0.25m的子字符串,这样处理端的数据响应时间较为合理;而拆分成0.1m和0.9m的两份子字符串,则和没有经过拆分的原json字符串相差较小,无法显著提高处理端的数据响应速度,因此优选采用上述四种拆分方式中的任一种可以避免拆分的json子字符串的数据不合理性,从而能够显著提高处理端的数据响应速度。

下面将会对键分别为节点键、节点键路径、节点添加唯一键或节点数组索引时,键和值的提取方式分别进行说明。

在一实施例中,可根据键为节点键时对键值的提取过程为例进行说明。

本领域技术人员应能理解,json字符串具有以下这些形式:对象是一个无序的“‘名称(键)/值’对”集合,一个对象以“{”(左括号)开始,“}”(右括号)结束,每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。键(key)是指“名称/值”对中的“名称”,如一个json字符串:

在此,名称“name”和“password”分别为该json字符串的键(key),读取json字符串,根据json的数据格式识别出json字符串中的key,当一个key包括完整的“{}”格式时,则为一个节点key,按照识别出的节点key将该json字符串进行拆分。

下面在一实施例中进行说明按照节点key进行拆分待传输的json字符串s的具体过程,待传输的json字符串为s,具体如下:

s

读取上述实施例中的字符串s时,得到节点key为key1、key2、key3,虽然“content”也为字符串s中的键,但因不具有json原有的完整数据格式,即不包括“{}”,因此不为节点key。“key1”:{}、“key2”:{}、“key3”:{}内均为key-value(值),如"content":"aabb"为一组key-value,其中,"aabb"是本申请中的举例,并不表示具体的数据量,仅为方便进行说明字符串中的值。

解析待传输的json字符串s,可以获取到s中的所有节点key(上述的key1、key2、key3)和key-value,按照节点key的拆分方式对s进行拆分,得到键值结构s1和子字符串c1、c2、c3,如下:

s1

其中,null表示将节点key对应的key-value(值)置空。

c1

c2

c3

处理端接收到s1、c1、c2、c3后,可将c1、c2、c3的键的值按照对应的节点key填充至键值结构s1中,从而合并成完整的json字符串s。

在一实施例中,可根据键为节点键路径时对键值的提取过程为例进行说明。

在读取待传输的json字符串时,可识别json字符串中是否有节点键路径,具体可为根据json字符串中节点key的引用层级来判断是否有节点key路径,例如读取一个json字符串:

节点key“b”引用节点key“a”,这里存在节点key路径a->b。利用节点key路径进行拆分待传输的json字符串的过程,在下面施例中将进行具体说明。待传输的json字符串为s,如下:

s

解析s获得键和值,根据json字符串中节点key的引用层级识别出节点key路径为“key1->path->key2”,确定对s的拆分方式按照节点key路径进行拆分比较合理,则拆分结果为:基本数据结构s1和子字符串c1如下表示,

s1

c1

在一实施例中,可根据键为节点数组索引时对键值的提取过程为例进行说明。

读取待传输的json字符串获取到key和值,json支持以数组索引作为json字符串的键,将分拆后的子字符串携带原有数组索引,以便最终数据的合成。其中,数组是值(value)的有序集合,一个数组以“[”(左括号)开始,“]”(右括号)结束,值之间使用“,”(逗号)分隔,在json字符串中每个数组[]内以每个“{}”为一个节点数组索引,根据数组索引将json字符串进行拆分,具体过程在如下实施例中具体说明,待传输的json字符串为s,如下:

s

解析s获得键和值,获取到字符串s的数组为“list:[]”,解析该数组得到三个节点数组索引(index),即在“list:[]”中有三组“{}”,获得节点数组index后,确定对s的拆分方式按照节点数组index进行拆分比较合理,则拆分结果为:基本数据结构s1和子字符串c1、子字符串c2和子字符串c3,如下表示:

s1

{

"list":[]

}

c1

c2

c3

需要说明的是,上述"0"、"1"和"2"为节点数组的索引项,用于标记程序和方便后续程序的修改,另外,上述"content":"ccdd"、"content":"rrtt"和"content":"nn"不表示实际应用中的数据量,仅为本申请中的举例情况,为方便进行说明字符串中的键-值。

在一实施例中,可根据键为节点添加唯一键时对键值的提取过程为例进行说明。

读取待传输的json字符串获取到该字符串的节点键(key),利用哈希算法给key添加唯一键,利用节点添加唯一键进行拆分待传输的json字符串,具体为:基于key的定义利用哈希算法随机生成一个唯一标识,将该随机生成的唯一标识替换字符串中的相同的key,哈希算法能够保证一个字符串的唯一性,因此可以作为唯一键来使用。在本申请的另一实施例中,待传输的json字符串为s,如下:

s

解析待传输的json字符串s,可以获取到s中的所有节点key和key-value,节点添加唯一键(uniquekey)进行定位,在上述实施例中,通过哈希算法随机生成唯一标识,将该唯一标识替换待传输的json字符串s中相同键,如节点添加唯一键"unique":"d3f6f7479a07e6e3fdc4fc189e9519d3"对"content":"asd"中的content进行定位,完成字符串s中第一个“key2”的标识,节点添加唯一键"unique":"afb9264c98914a80c676d90252901386"对"content":"fgh"中的content进行定位,完成字符串s中第二个“key2”的标识。按照节点添加唯一键(节点添加uniquekey)的拆分方式对s进行拆分,得到键值结构s1和子字符串c1、c2拆分结果:

s1

c1

c2

需要说明的是,上述的按照节点key、节点key路径、节点数组index和节点添加uniquekey对待传输的json字符串进行拆分的实施例中s和c1、c2、c3仅为举例,说明获取待传输的json字符串中的键和值,并根据键和值确定子字符串的键,即确定拆分方式,按照拆分方式进行拆分json字符串。可具体不限于上述四种拆分方式,只要键和值的大小提取合理,能够组成合适大小的json子字符串,能够提高处理端的数据响应速度的方式都可。

本申请一实施例中,本领域技术人员应能理解,对待传输json字符串的拆分方式可以包括但不限于节点key、节点key路径、节点添加uniquekey、节点数组index这四种方式,其他现有的或今后可能出现的对json字符串进行拆分的拆分方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请一实施例中,在步骤s12中,根据所述值和json子字符串的键将所述待传输的json字符串拆分为json子字符串之后,可以包括:步骤s3,获取json子字符串的个数、显示顺序和体积大小中一种或任意组合的信息;步骤s4,根据所获取的信息确定发送json子字符串的传输方式。本申请一实施例中,步骤s3中对所拆分的json子字符串进行评估可以确定实际情况中待传输的json字符串可以解耦成的json子字符串的个数,以及每个子字符串的体积大小,可确定拆分是否合理,例如,获取到体积为1m的json字符串拆分成了体积大小分别为0.1m和0.9m的两个子字符串,则和没有经过拆分的原json字符串相差较小,可认为原json字符串不需要采用拆分方式可直接进行传输。如果获取到体积为1m的json字符串拆分成了体积大小都为0.25m的四个子字符串,将拆分的四个子字符串进行传输,则会显著提高处理端的数据响应时间,但传输时还需获取每个子字符串的显示时间,如子字符串c1在原json字符串中的显示时间是最早的,则处理端在进行合并子字符串时会按照显示时间顺序进行,这样会保证用户在网页或移动终端看到正常的数据显示内容。接着,在步骤s4中,利用步骤s3中对实际情况中所拆分成的子字符串的信息确定传输每个子字符串的传输方式,从而更加合理的传输子字符串,提高处理端的数据响应速度。

接上述实施例,所述传输方式可以包括:将所述json子字符串按顺序依次发送;或将所述json子字符串并行发送。在本申请的一具体实施例中,将json子字符串传输至处理端时可将每个子字符串按顺序依次发送,如按照信息中的显示时间进行发送,在本申请一具体实施例中,如将json字符串拆分成的子字符串为c1、c2和c3,数据键值结构为s1,则将所述数据键值结构传输至处理端的传输时间为vs1/speed,其中,vs1表示所述数据键值结构的数据体积,speed表示传输速度。每个子字符串在json字符串中的显示时间顺序依次为c1、c2、c3,则先传输c1,c1传输成功后再传输c2,此时,处理端按照先后接收的c1、c2、c3依次填充至对应的key,将多个子字符串按顺序依次传输至处理端的传输时间为i=1,……n,表示第i个子字符串的数据体积,speed表示传输速度,则该传输方式的待传输字符串的传输时间为从而使得用户在最短时间内看到一部分数据呈现,如用户在延迟时间为(vs1/speed+vc1/speed)后能够先看到c1的数据显示内容,而不是在延迟时间为s/speed后才可到c1的数据显示内容,这种渐进加载的方式呈现数据,提高了处理端的数据响应速度。

在本申请的又一具体实施例中,在一数据量较大的网络接口中,将待传输的json字符串s拆分成多个子字符串,根据信息可知子字符串数量较大,此时可选择将所有子字符串并行发送的传输方式,从而大幅度提高总的传输速度,此时并行传输多个子字符串的时间为max(vc1/speed,……,vcn/speed),表示选取多个子字符串并发传输至所述处理端中最长的传输时间,vci/speed(i=1,……n)表示第i个子字符串传输至所述处理端的传输时间。则该并行传输方式的待传输字符串的传输时间为vs1/speed+max(vc1/speed,……,vcn/speed),其中,vs1/speed表示数据键值结构传输至处理端的传输时间;从而大幅度地提高了数据的传输速度,降低处理端的响应延迟。

根据本申请的另一个方面,提供了一种在处理端的json字符串显示的方法,该方法可以包括步骤s21和步骤s22:

步骤s21,接收json字符串的键值结构和json子字符串;本申请的一实施例中,首先进行步骤s21中接收待合并的数据,即接收数据键值结构和json子字符串,接着将所接收的数据按照预设的方式进行合并使得在处理端显示给用户,在步骤s22中进行具体的数据合并过程,如下:

步骤s22,从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

本申请一实施例中,json字符串的键值结构和json子字符串可由发送方提取待传输的json字符串中的键和值,根据提取得到的键和值得到json字符串的键值结构,并将json字符串拆分为json子字符串后得到,json字符串的键值结构和json子字符串的具体格式,可由json字符串的键值结构和json子字符串的发送和接收方事先约定,只要能实现接收方在接收到json字符串的键值结构和json子字符串之后,能够识别json字符串的键值结构和json子字符串中的内容,并从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串即可。

本申请一实施例中,在网络接口中进行信息交换时,比如网页、移动终端与服务器之间进行的数据的交互,采用将待传输的json字符串拆分成键值结构和多个json子字符串的方法,则对应在处理端需要将接收从发送端发送的键值结构和json子字符串进行合并后显示,从而处理端无须等到json字符串完整加载之后才能解析整个json字符串,处理端只要到等到所述键值结构和某个json子字符串加载完,即可解析和显示部分json字符串,从而提高了处理端的数据响应速度,提升了用户体验。

本申请一实施例中,所述键值结构可以为将所述json子字符串的键的值置空后的json字符串,则将提取的值填充至所述键值结构中,可以包括:将提取的值填充至所述键值结构中json子字符串的键的值的置空位置。

本申请一实施例中,发送端是将数据键值结构和子字符串分别传输的,数据键值结构中没有值,为将子字符串的值置空后的json字符串,因此处理端需要将数据键值结构中的置空的值进行填充,为了保证发送端的待传输json字符串与处理端最后显示出的数据内容相一致,则需保证处理端进行合并数据键值结构和json子字符串的准确性,因此,首先从接收到的json子字符串中提取每个json子字符串中的值,将提取的值分别填充至键值结构中子字符串的键的值的置空位置,按照键值结构中字符串的键的位置进行匹配填充数据保证了合并后的json数据的格式完整性,填充所有位置后显示填充后的键值结构,即显示合并后的数据内容,完成网络接口的信息交互。

在本申请一实施例中,步骤s21可以包括:在接收到待传输的json字符串的键值结构后,接收json子字符串。本申请一实施例中,为了提高处理端的数据响应速度和减少数据缓存所占的存储空间,在接收到待传输的json字符串的键值结构后,再接收json子字符串。在本申请一实施例中,如待传输的json字符串为s,

s

待传输的json字符串s按照节点key被拆分成的键值结构s1和子字符串,处理端先接收键值结构s1后,再接收子字符串,其中,

键值结构s1

接收键值结构s1成功后,再接收子字符串c1、c2和c3,

子字符串c1

子字符串c2

子字符串c3

因此,当子字符串c1、c2、c3中数据量比较大时,即"content":"a"、"content":"b"、"content":"c"表示的数据量较大时,在键值结构s1传输成功之后,将字符串c1、c2、c3依次填充至s1对应的位置,进而合并成完整的数据消息格式,且显著提高了处理端的数据响应速度。

在本申请一实施例中,在步骤s22中,所述键可以包括:节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。本申请一实施例中,将子字符串的值按照节点键(节点key)、节点键路径(节点key路径)、节点添加唯一键(节点添加uniquekey)和节点数组索引(节点数组index)中任一种进行填充到键值结构的对应位置,能够保证合并后的json数据的合法性和完整性,从而完整的显示数据,完成网络接口中的信息交互。

继续接上述实施例,将提取的值填充至键值结构中节点key对应的值的置空位置,如先将c1的值填充至键值结构s1中key1的值的置空位置,c2、c3的值对应的填充至s1中key2、key3的值的置空位置,从而保证全部填充完值后的数据结构与原未被拆分时的json字符串格式和内容一致,保证数据的格式完整性。需要说明的是,上述先将c1的值填充至键值结构s1中再填充c2和c3的值仅为一优选举例,也可为并发的填充c1、c2、c3的值,本申请一实施例中并不限定多个子字符串的值填充至键值结构时的顺序。

在本申请一实施例中,步骤s22可以包括:根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,每次组合后显示所述组合成的json字符串,例如可以将提取的值填充至所述键值结构中json子字符串的键的值的置空位置,每次填充后显示所述填充后的键值结构。在此,根据json子字符串显示顺序是指在原未被拆分时的json字符串中各子字符串的生成时间,如json字符串中现有子字符串c1内容后再有子字符串c2,依次将从每个子字符串中提取到的值填充至数据键值结构中对应的子字符串的键的值的置空位置,每次填充后显示,使得用户在最短时间内可看到一部分显示数据,从而提高了用户体验。

继续接上述实施例,如在处理端接收到键值结构s1后,按照c1、c2、c3在待传输的json字符串s中的显示时间顺序先从子字符串c1中提取值,填充至s1中对应的位置,拼接成如下数据结构s2:

此时,用户在最短时间内看到了key1显示的数据内容,而不是等到s都加载完成后才能看到数据内容,同样的过程,再获取c2中的值,将c2填充至含有c1值的数据结构s2中,填充后显示有c1和c2值的数据结构,同理可填充c3的值,完成从发送端接收的键值结构和子字符串的合并数据过程,形成格式完整的json数据。

图2示出本申请一个方面的一种json字符串的传输和处理的方法交互流程示意图;所述方法可以包括发送端的步骤s11~步骤s13和处理端的步骤s21及步骤s22,其中,在步骤s11中,提取待传输的json字符串中的键和值;在步骤s12中,根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,其中,所述json字符串的键值结构为所述json字符串的键值结构,所述json子字符串由所述键和值组成;在步骤s13中,发送所述键值结构和json子字符串。接着,在步骤s21中,接收json字符串的键值结构和json子字符串;在步骤s22中,从接收到的json子字符串中提取值,将提取的值将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

图3示出本申请的一实施例中json字符串的传输和处理的流程示意图;在处理端进行以下步骤,在步骤s01中,解析待传输的json字符串,得到字符串的键和值,便于后续根据键和值对所述待传输的json字符串进行准确地拆分,得到json子字符串,从而保证了每个拆分成的json子字符串的键和值的格式完整性以及子字符串的合法性;接着进行步骤s02,根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,从而使得所拆分成的多个json子字符串的数据完整;步骤s03中,将数据键值结构和多个json子字符串传输至处理端。因此,通过上述在发送端的json字符串的传输方法,解决了在保证格式完整性的前提下将数据量较大的json字符串拆分成多个小块数据(子字符串)的问题,同时将拆分结果中的数据键值结构和多个子字符串分步进行传输,提高了处理端的数据响应速度。接着,在处理端进行以下步骤,在步骤s04中,从接收到的json子字符串中提取值,将提取的值填充到子字符串的键的值的置空位置,随后,步骤s05每次填充后显示填充后的键值结构,直至所有提取到的值都填充完,形成格式完整的json字符串;进而保证了合并后的json字符串的格式完整性,在处理端渐进式的加载方式呈现数据,提高了处理端的数据响应速度及用户体验。

进一步地,在发送端根据节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种json子字符串的键拆分待传输的json字符串,可以避免拆分的json子字符串的数据不合理性,从而能够显著提高处理端的数据响应速度。

进一步地,在发送端评估json字符串中所拆分成的json子字符串,获取到子字符串的个数、显示顺序和体积大小中一种或任意组合的信息,判断所拆分的子字符串是否合法,并根据所获取的信息灵活选择发送json子字符串的传输方式,进而保证json子字符串的合法性,提高传输的效率。

进一步地,在处理端进行合并数据时,根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,将提取的值填充至所述键值结构中json子字符串的键的位置,每次填充后显示所述填充后的键值结构,使得用户在最短时间内可看到一部分显示数据,从而提高了用户体验。

需要说明的是,本申请所述的一种json字符串的传输、显示的方法在实际应用中可应用于网站、移动终端,例如,在某网站上注册账户,浏览器会向后台服务器提交json数据进行信息交换,还可以用在所有使用json数据的网络接口中,如数据大盘http接口中。

根据本申请的另一个方面,提供了一种网络接口端json字符串传输的方法,所述方法包括:提取发送端待传输至接收端的json字符串中的键和值;根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串;发送所述键值结构和json子字符串至所述接收端。

本申请一实施例中,网络接口端可以是连接发送端和接收端进行数据通信的中介,具体可以是网站服务器,发送端和接收端可以分别是浏览器客户端,或者短信、qq、微信客户端,通过网络接口端可以将键值结构和json子字符串分开发送到接收端。

根据本申请的另一个方面,提供了一种接收端json字符串处理的方法,所述方法包括:从网络接口接收json字符串的键值结构和json子字符串;从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串。

本申请一实施例中,网络接口端可以是连接发送端和接收端进行数据通信的中介,具体可以是网站服务器,接收端可以是浏览器客户端,或者短信、qq、微信客户端,通过网络接口端接收端可以在接收键值结构和json子字符串后,从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串,实现json字符串的逐段显示,提高显示效率。

根据本申请的另一个方面,提供了一种json字符串传输的发送设备,该发送设备可以包括:

获取装置11,用于提取待传输的json字符串中的键和值。

本申请一实施例中,json字符串是符合json字符串格式的,具体地,一个json字符串定义在“{}”中,只有格式完整的json的字符串才能被解析,json字符串通过键和值(key-value)的形式定义各数据类型,如一个json字符串{“a”:1},可以从其中获得键a及其对应的值,值为1。

在本申请所述的在发送端的json字符串传输的方法中,首先提取待传输的json字符串中的键和值,以便于后续根据提取的键和值对所述待传输的json字符串进行准确地拆分,得到json子字符串。

本申请一实施例中,上述提取到的待传输的json字符串中的键和值可以是json字符串是全部或部分键和值,提取到的json字符串是全部或部分键和值作为后续json子字符串的键和值,可以根据json字符串的具体情况确定,如json字符串的大小,键和值的类型等。

拆分装置12,用于根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串。

其中,所述json字符串的键值结构用于供接收端根据键值结构将各json子子字符串组装成json字符串。

本申请一实施例中,可根据json字符串键和值确定json子字符串的键,根据所述值和json子字符串的键将所述待传输的json字符串拆分为json子字符串,及得到所述待传输的json字符串的键值结构,其中,所述键值结构为将所述json子字符串的键的值置空后的json字符串。

本申请一实施例中,为了保证所拆分成的多个json子字符串的格式完整性,将待传输json字符串按照json子字符串的键进行拆分,其中,json子字符串的键为根据所获取的json字符串的键和值确定的拆分方式,如json子字符串的键为节点key,则可按照节点key对待传输的json字符串进行拆分,得到多个json子字符串后,将多个json子字符串进行保存并将待传输的json字符串中每个json子字符串的值置空,得到json字符串的键值结构。可以理解,在其它具体实现中,所述键值结构的内容,只要是接收端能根据该键值结构能够将各json子字符串组装成完整的json字符串都可。

本申请实施例中,通过根据提取的键和值来对json字符串进行拆分,可以确保拆分的每个子字符串,均可以是符合json字符串格式的字符串,从而保证了每个拆分成的json子字符串的键和值的格式完整性以及子字符串的合法性,这里的json子字符串就是将一个json字符串分成多个子字符串,分出的每个子字符串仍具有完整格式,可以单独被解析的格式完整性。

在本申请一具体实施例中,如图1中示出的拆分待传输的json字符串的示意图,其中,大块json数据为待传输的json字符串,拆分器(parser)包括json子字符串的键和值,经过拆分器(parser)的拆分,得到多个json子字符串,如图1中子节点c1、子节点c2、子节点c3表示多个json子字符串,以及在将c1、c2、c3保存后,将待传输的json字符串中c1、c2、c3子节点(子字符串)中键的值(key-value)置空(置为null),得到待传输的json字符串的键值结构,即数据键值结构s1。

另外,json字符串的数据定义在“{}”内,如果最后一个“}”没有加载完成,这个json数据的格式是不合法的,当json内数据越来越庞大的时候,无法把已下载一部分的json数据进行解析,所以必须等待数据完整加载才能解析,这就增加了程序的延迟。因为json格式的限制,如果直接把json数据分块传输,此时数据是不完整的,无法解析。而通过本申请得到键值结构和json字符串的方法,可以将json数据解耦成格式完整的小数据块即json子字符串,json子字符串的数据定义在“{}”内,保证其格式完整性,处理端在接收每一个小数据块即json子字符串,将json子字符串填充至至所述键值结构后,即可独立解析并显示填充后的基本节构,无需等待其它小数据块都接收完毕后才进行一起显示,达到边接收、边处理和显示部分json字符串的效果,从而提高程序响应速度。

本申请一实施例中,在网络接口采用json字符串进行信息交换时,为了后续将完整格式的json字符串进行拆分成多个更小的但仍具有完整格式的json子字符串,即拆分成多个仍具有完整格式的json小块数据。

传输装置13,用于发送所述键值结构和json子字符串。

本申请实施例中,json字符串被处理成键值结构和子字符串后,进行发送,json字符串的键值结构比json字符串的数据量要小,如键值结构内没有json子字符串的键的值,与传输整个json子字符串相比,因为传输数据量的减少,将键值结构传输至处理端时的传输速度大幅度被提高,降低了传输数据的延迟,尤其是在数据量较大的网络接口中,进行信息交换时采用发送键值结构和json子字符串的方式,大大提高了处理端的响应速度。

此外,将json子字符串发送至处理端使得处理端对接收到的键值结构和json子字符串进行合并,显示完整的json数据内容,完成网络接口的信息交换。需要说明的是,键值结构和json子字符串的发送可并发进行,也可以按照顺序依次进行。

本申请实施例中,由于得到json字符串的键值结构和json子字符串,后续将键值结构和json子字符串分开传输到处理端后,处理端不用等到json字符串完整加载之后才能解析整个json字符串,处理端只要到等到键值结构和某个json子字符串加载完,即可解析和显示部分json字符串,从而提高了处理端的数据响应速度,提升了用户体验。

在本申请的一实施例中,传输装置13发送键值结构和json子字符串具体可以包括:发送键值结构;在键值结构发送成功后,发送json子字符串。先发送没有json子字符串的键的值的键值结构,键值结构数据量较小,传输速度较快,在键值结构发送成功后,再将json子字符串进行传输,避免了若json子字符串比键值结构先发送成功需要先缓存而造成的占用数据存储空间的问题。

在本申请一实施例中,所述键,可以包括:节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。本申请一实施例中,按照节点键(节点key)、节点键路径(节点key路径)、节点添加唯一键(节点添加uniquekey)和节点数组索引(节点数组index)四种方式中的任意一种进行拆分待传输的json字符串,能够保证json数据的合法性、传输的效率和完整性。例如,体积为1m的json字符串可以拆分成4份0.25m的子字符串,这样处理端的数据响应时间较为合理;而拆分成0.1m和0.9m的两份子字符串,则和没有经过拆分的原json字符串相差较小,无法显著提高处理端的数据响应速度,因此优选采用上述四种拆分方式中的任一种可以避免拆分的json子字符串的数据不合理性,从而能够显著提高处理端的数据响应速度。

下面将会对键分别为节点键、节点键路径、节点添加唯一键或节点数组索引时,键和值的提取方式分别进行说明。

在一实施例中,可根据键为节点键时对键值的提取过程为例进行说明。

本领域技术人员应能理解,json字符串具有以下这些形式:对象是一个无序的“‘名称(键)/值’对”集合,一个对象以“{”(左括号)开始,“}”(右括号)结束,每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。键(key)是指“名称/值”对中的“名称”,如一个json字符串:

在此,名称“name”和“password”分别为该json字符串的键(key),读取json字符串,根据json的数据格式识别出json字符串中的key,当一个key包括完整的“{}”格式时,则为一个节点key,按照识别出的节点key将该json字符串进行拆分。

下面在一实施例中进行说明按照节点key进行拆分待传输的json字符串s的具体过程,待传输的json字符串为s,具体如下:

s

读取上述实施例中的字符串s时,得到节点key为key1、key2、key3,虽然“content”也为字符串s中的键,但因不具有json原有的完整数据格式,即不包括“{}”,因此不为节点key。“key1”:{}、“key2”:{}、“key3”:{}内均为key-value(值),如"content":"aabb"为一组key-value,其中,"aabb"是本申请中的举例,并不表示具体的数据量,仅为方便进行说明字符串中的值。

解析待传输的json字符串s,可以获取到s中的所有节点key(上述的key1、key2、key3)和key-value,按照节点key的拆分方式对s进行拆分,得到键值结构s1和子字符串c1、c2、c3,如下:

s1

其中,null表示将节点key对应的key-value(值)置空。

c1

c2

c3

处理端接收到s1、c1、c2、c3后,可将c1、c2、c3的键的值按照对应的节点key填充至键值结构s1中,从而合并成完整的json字符串s。

在一实施例中,可根据键为节点键路径时对键值的提取过程为例进行说明。

在读取待传输的json字符串时,可识别json字符串中是否有节点键路径,具体可为根据json字符串中节点key的引用层级来判断是否有节点key路径,例如读取一个json字符串:

节点key“b”引用节点key“a”,这里存在节点key路径a->b。利用节点key路径进行拆分待传输的json字符串的过程,在下面施例中将进行具体说明。待传输的json字符串为s,如下:

s

解析s获得键和值,根据json字符串中节点key的引用层级识别出节点key路径为“key1->path->key2”,确定对s的拆分方式按照节点key路径进行拆分比较合理,则拆分结果为:基本数据结构s1和子字符串c1如下表示,

s1

c1

在一实施例中,可根据键为节点数组索引时对键值的提取过程为例进行说明。

读取待传输的json字符串获取到key和值,json支持以数组索引作为json字符串的键,将分拆后的子字符串携带原有数组索引,以便最终数据的合成。其中,数组是值(value)的有序集合,一个数组以“[”(左括号)开始,“]”(右括号)结束,值之间使用“,”(逗号)分隔,在json字符串中每个数组[]内以每个“{}”为一个节点数组索引,根据数组索引将json字符串进行拆分,具体过程在如下实施例中具体说明,待传输的json字符串为s,如下:

s

解析s获得键和值,获取到字符串s的数组为“list:[]”,解析该数组得到三个节点数组索引(index),即在“list:[]”中有三组“{}”,获得节点数组index后,确定对s的拆分方式按照节点数组index进行拆分比较合理,则拆分结果为:基本数据结构s1和子字符串c1、子字符串c2和子字符串c3,如下表示:

s1

{

"list":[]

}

c1

c2

c3

需要说明的是,上述"0"、"1"和"2"为节点数组的索引项,用于标记程序和方便后续程序的修改,另外,上述"content":"ccdd"、"content":"rrtt"和"content":"nn"不表示实际应用中的数据量,仅为本申请中的举例情况,为方便进行说明字符串中的键-值。

在一实施例中,可根据键为节点添加唯一键时对键值的提取过程为例进行说明。

读取待传输的json字符串获取到该字符串的节点键(key),利用哈希算法给key添加唯一键,利用节点添加唯一键进行拆分待传输的json字符串,具体为:基于key的定义利用哈希算法随机生成一个唯一标识,将该随机生成的唯一标识替换字符串中的相同的key,哈希算法能够保证一个字符串的唯一性,因此可以作为唯一键来使用。在本申请的另一实施例中,待传输的json字符串为s,如下:

s

解析待传输的json字符串s,可以获取到s中的所有节点key和key-value,节点添加唯一键(uniquekey)进行定位,在上述实施例中,通过哈希算法随机生成唯一标识,将该唯一标识替换待传输的json字符串s中相同键,如节点添加唯一键"unique":"d3f6f7479a07e6e3fdc4fc189e9519d3"对"content":"asd"中的content进行定位,完成字符串s中第一个“key2”的标识,节点添加唯一键"unique":"afb9264c98914a80c676d90252901386"对"content":"fgh"中的content进行定位,完成字符串s中第二个“key2”的标识。按照节点添加唯一键(节点添加uniquekey)的拆分方式对s进行拆分,得到键值结构s1和子字符串c1、c2拆分结果:

s1

c1

c2

需要说明的是,上述的按照节点key、节点key路径、节点数组index和节点添加uniquekey对待传输的json字符串进行拆分的实施例中s和c1、c2、c3仅为举例,说明获取待传输的json字符串中的键和值,并根据键和值确定子字符串的键,即确定拆分方式,按照拆分方式进行拆分json字符串。可具体不限于上述四种拆分方式,只要键和值的大小提取合理,能够组成合适大小的json子字符串,能够提高处理端的数据响应速度的方式都可。

本申请一实施例中,本领域技术人员应能理解,对待传输json字符串的拆分方式可以包括但不限于节点key、节点key路径、节点添加uniquekey、节点数组index这四种方式,其他现有的或今后可能出现的对json字符串进行拆分的拆分方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

在本申请一实施例中,所述发送设备还用于:获取json子字符串的个数、显示顺序和体积大小中一种或任意组合的信息;根据所获取的信息确定发送json子字符串的传输方式。本申请一实施例中,对所拆分的json子字符串进行评估可以确定实际情况中待传输的json字符串可以解耦成的json子字符串的个数,以及每个子字符串的体积大小,可确定拆分是否合理,例如,获取到体积为1m的json字符串拆分成了体积大小分别为0.1m和0.9m的两个子字符串,则和没有经过拆分的原json字符串相差较小,可认为原json字符串不需要采用拆分方式可直接进行传输。如果获取到体积为1m的json字符串拆分成了体积大小都为0.25m的四个子字符串,将拆分的四个子字符串进行传输,则会显著提高处理端的数据响应时间,但传输时还需获取每个子字符串的显示时间,如子字符串c1在原json字符串中的显示时间是最早的,则处理端在进行合并子字符串时会按照显示时间顺序进行,这样会保证用户在网页或移动终端看到正常的数据显示内容。接着,利用对实际情况中所拆分成的子字符串的信息确定传输每个子字符串的传输方式,从而更加合理的传输子字符串,提高处理端的数据响应速度。

接上述实施例,所述传输方式可以包括:将所述json子字符串按顺序依次发送;或将所述json子字符串并行发送。在本申请的一具体实施例中,将json子字符串传输至处理端时可将每个子字符串按顺序依次发送,如按照信息中的显示时间进行发送,在本申请一具体实施例中,如将json字符串拆分成的子字符串为c1、c2和c3,数据键值结构为s1,则将所述数据键值结构传输至处理端的传输时间为vs1/speed,其中,vs1表示所述数据键值结构的数据体积,speed表示传输速度。每个子字符串在json字符串中的显示时间顺序依次为c1、c2、c3,则先传输c1,c1传输成功后再传输c2,此时,处理端按照先后接收的c1、c2、c3依次填充至对应的key,将多个子字符串按顺序依次传输至处理端的传输时间为i=1,……n,表示第i个子字符串的数据体积,speed表示传输速度,则该传输方式的待传输字符串的传输时间为从而使得用户在最短时间内看到一部分数据呈现,如用户在延迟时间为(vs1/speed+vc1/speed)后能够先看到c1的数据显示内容,而不是在延迟时间为s/speed后才可到c1的数据显示内容,这种渐进加载的方式呈现数据,提高了处理端的数据响应速度。

在本申请的又一具体实施例中,在一数据量较大的网络接口中,将待传输的json字符串s拆分成多个子字符串,根据信息可知子字符串数量较大,此时可选择将所有子字符串并行发送的传输方式,从而大幅度提高总的传输速度,此时并行传输多个子字符串的时间为max(vc1/speed,……,vcn/speed),表示选取多个子字符串并发传输至所述处理端中最长的传输时间,vci/speed(i=1,……n)表示第i个子字符串传输至所述处理端的传输时间。则该并行传输方式的待传输字符串的传输时间为vs1/speed+max(vc1/speed,……,vcn/speed),其中,vs1/speed表示数据键值结构传输至处理端的传输时间;从而大幅度地提高了数据的传输速度,降低处理端的响应延迟。

根据本申请的另一个方面,还提供了一种json字符串显示的处理设备,该处理设备可以包括:

接收装置21,用于接收待传输的json字符串的键值结构和json子字符串。本申请一实施例中,首先进行步骤s21中接收待合并的数据,即接收数据键值结构和json子字符串,接着将所接收的数据按照预设的方式进行合并使得在处理端显示给用户,接着将所接收的数据按照预设的方式进行合并使得在处理端显示给用户,在合并装置22中进行具体的数据合并过程,如下:

合并装置22,用于从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串,从而处理端无须等到json字符串完整加载之后才能解析整个json字符串,处理端只要到等到所述键值结构和某个json子字符串加载完,即可解析和显示部分json字符串,从而提高了处理端的数据响应速度,提升了用户体验。

本申请一实施例中,json字符串的键值结构和json子字符串可由发送方提取待传输的json字符串中的键和值,根据提取得到的键和值得到json字符串的键值结构,并将json字符串拆分为json子字符串后得到,json字符串的键值结构和json子字符串的具体格式,可由json字符串的键值结构和json子字符串的发送和接收方事先约定,只要能实现接收方在接收到json字符串的键值结构和json子字符串之后,能够识别json字符串的键值结构和json子字符串中的内容,并从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串即可。

在本申请一实施例中,所述键值结构为将所述json子字符串的键的值置空后的json字符串,则将提取的值填充至所述键值结构中,可以包括:将提取的值填充至所述键值结构中json子字符串的键的值的置空位置。

本申请一实施例中,发送端是将数据键值结构和子字符串分别传输的,数据键值结构中没有值,为将子字符串的值置空后的json字符串,因此处理端需要将数据键值结构中的置空的值进行填充,为了保证发送端的待传输json字符串与处理端最后显示出的数据内容相一致,则需保证处理端进行合并数据键值结构和json子字符串的准确性,因此,首先从接收到的json子字符串中提取每个json子字符串中的值,将提取的值分别填充至键值结构中子字符串的键的值的置空位置,本申请一实施例中,按照键值结构中字符串的键的位置进行匹配填充数据保证了合并后的json数据的格式完整性,填充所有位置后显示填充后的键值结构,即显示合并后的数据内容,完成网络接口的信息交互。

在本申请一实施例中,接收装置21用于:在接收到待传输的json字符串的键值结构后,接收json子字符串。本申请一实施例中,为了提高处理端的数据响应速度和减少数据缓存所占的存储空间,在接收到待传输的json字符串的键值结构后,再接收json子字符串。在本申请一实施例中,如待传输的json字符串为s,

s

待传输的json字符串s按照节点key被拆分成的键值结构s1和子字符串,处理端先接收键值结构s1后,再接收子字符串,其中,

键值结构s1

接收键值结构s1成功后,再接收子字符串c1、c2和c3,

子字符串c1

子字符串c2

子字符串c3

因此,当子字符串c1、c2、c3中数据量比较大时,即"content":"a"、"content":"b"、"content":"c"表示的数据量较大时,在键值结构s1传输成功之后,将字符串c1、c2、c3依次填充至s1对应的位置,进而合并成完整的数据消息格式,且显著提高了处理端的数据响应速度。

在本申请一实施例中,所述键可以包括:节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种。本申请一实施例中,将子字符串的值按照节点键(节点key)、节点键路径(节点key路径)、节点添加唯一键(节点添加uniquekey)和节点数组索引(节点数组index)中任一种进行填充到键值结构的对应位置,能够保证合并后的json数据的合法性和完整性,从而完整的显示数据,完成网络接口中的信息交互。

继续接上述实施例,将提取的值填充至键值结构中节点key对应的值的置空位置,如先将c1的值填充至键值结构s1中key1的值的置空位置,c2、c3的值对应的填充至s1中key2、key3的值的置空位置,从而保证全部填充完值后的数据结构与原未被拆分时的json字符串格式和内容一致,保证数据的格式完整性。需要说明的是,上述先将c1的值填充至键值结构s1中再填充c2和c3的值仅为一优选举例,也可为并发的填充c1、c2、c3的值,本申请一实施例中并不限定多个子字符串的值填充至键值结构时的顺序。

在本申请一实施例中,合并装置22用于:根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,每次组合后显示所述组合成的json字符串,例如可以将提取的值填充至所述键值结构中json子字符串的键的值的置空位置,每次填充后显示所述填充后的键值结构。在此,根据json子字符串显示顺序是指在原未被拆分时的json字符串中各子字符串的生成时间,如json字符串中现有子字符串c1内容后再有子字符串c2,依次将从每个子字符串中提取到的值填充至数据键值结构中对应的子字符串的键的值的置空位置,每次填充后显示,使得用户在最短时间内可看到一部分显示数据,从而提高了用户体验。继续接上述实施例,如在处理端接收到键值结构s1后,按照c1、c2、c3在待传输的json字符串s中的显示时间顺序先从子字符串c1中提取值,填充至s1中对应的值的置空位置,拼接成如下数据结构s2:

此时,用户在最短时间内看到了key1显示的数据内容,而不是等到s都加载完成后才能看到数据内容,同样的过程,再获取c2中的值,将c2填充至含有c1值的数据结构s2中,填充后显示有c1和c2值的数据结构,同理可填充c3的值,完成从发送端接收的键值结构和子字符串的合并数据过程,形成格式完整的json数据。

图3示出根据本申请的又一实施例中的json字符串的传输、处理的系统模块图;所述系统可以包括发送设备1和处理设备2;所述发送设备可以包括获取装置11、拆分装置12和传输装置13;获取装置11提取待传输的json字符串中的键和值;拆分装置12根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,其中,所述json字符串的键值结构为所述json字符串的键值结构,所述json子字符串由所述键和值组成;传输装置13发送所述键值结构和json子字符串。所述处理设备2可以包括接收装置21和合并装置22,接收装置21接收json字符串的键值结构和json子字符串;合并装置22从接收到的json子字符串中提取值,将提取的值将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。

具体地:获取装置11,用于解析待传输的json字符串,得到字符串的键和值,便于后续根据键和值对所述待传输的json字符串进行准确地拆分,得到json子字符串,从而保证了每个拆分成的json子字符串的键和值的格式完整性以及子字符串的合法性;拆分装置12,用于根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,从而使得所拆分成的多个json子字符串的数据完整;传输装置13,用于将数据键值结构和多个json子字符串传输至处理端。因此,通过上述在发送端的json字符串的传输方法,解决了在保证格式完整性的前提下将数据量较大的json字符串拆分成多个小块数据(子字符串)的问题,同时将拆分结果中的数据键值结构和多个子字符串分步进行传输,提高了处理端的数据响应速度。接着,接收装置21接收待传输的json字符串的键值结构和json子字符串之后,合并装置22从接收到的json子字符串中提取值,将提取的值填充到子字符串的键的值的置空位置,随后,合并装置22还用于每次填充后显示填充后的键值结构,直至所有提取到的值都填充完,形成格式完整的json字符串;进而保证了合并后的json字符串的格式完整性,在处理端渐进式的加载方式呈现数据,提高了处理端的数据响应速度及用户体验。

进一步地,在本申请所述的一种json字符串的传输的发送设备中所述的实施例中,根据节点键、节点键路径、节点添加唯一键和节点数组索引中的任一种json子字符串的键拆分待传输的json字符串,可以避免拆分的json子字符串的数据不合理性,从而能够显著提高处理端的数据响应速度。

进一步地,在本申请所述的一种json字符串的传输的发送设备中所述的实施例中,评估json字符串中所拆分成的json子字符串,获取到子字符串的个数、显示顺序和体积大小中一种或任意组合的信息,判断所拆分的子字符串是否合法,并根据所获取的信息灵活选择发送json子字符串的传输方式,进而保证json子字符串的合法性,提高传输的效率。

进一步地,在本申请所述的一种json字符串的显示的处理设备中所述的实施例中,进行合并数据时,根据json子字符串显示顺序,依次从接收到的json子字符串中提取值,将提取的值填充至所述键值结构中json子字符串的键的位置,每次填充后显示所述填充后的键值结构,使得用户在最短时间内可看到一部分显示数据,从而提高了用户体验。

需要说明的是,本申请所述的发送设备和处理设备中用于json字符串的传输、显示的方法在实际应用中可应用于网站、移动终端,例如,在某网站上注册账户,浏览器会向后台服务器提交json数据进行信息交换,还可以用在所有使用json数据的可以进行数据交互的网络接口中,如数据大盘http接口中。

根据本申请的另一面,还提供一种网络接口端,用于:提取发送端待传输至接收端的json字符串中的键和值;根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串;发送所述键值结构和json子字符串至所述接收端。

本申请一实施例中,网络接口端可以是连接发送端和接收端进行数据通信的中介,具体可以是网站服务器,发送端和接收端可以分别是浏览器客户端,或者短信、qq、微信客户端,通过网络接口端可以将键值结构和json子字符串分开发送到接收端。

根据本申请的另一面,还提供一种接收端,用于:从网络接口接收json字符串的键值结构和json子字符串;从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串。

本申请一实施例中,网络接口端可以是连接发送端和接收端进行数据通信的中介,具体可以是网站服务器,接收端可以是浏览器客户端,或者短信、qq、微信客户端,通过网络接口端接收端可以在接收键值结构和json子字符串后,从接收到的json子字符串中提取值,将提取的值与所述键值结构组合成json字符串,在显示界面上显示所述组合成的json字符串,实现json字符串的逐段显示,提高显示效率。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

提取待传输的json字符串中的键和值;

根据提取的键和值得到json字符串的键值结构,并将所述json字符串拆分为json子字符串,所述json子字符串由所述键和值组成;

发送所述键值结构和json子字符串。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收json字符串的键值结构和json子字符串;

从接收到的json子字符串中提取值,将提取的值将提取的值与所述键值结构组合成json字符串,显示所述组合成的json字符串。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例可以包括一个装置,该装置可以包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1