著录项信息
专利名称 | 基于JSON的机构养老数据交互方法及系统 |
申请号 | CN201610258202.5 | 申请日期 | 2016-04-22 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2016-09-21 | 公开/公告号 | CN105959263A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 无锡中科西北星科技有限公司 | 申请人地址 | 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 江苏中科西北星信息科技有限公司 | 当前权利人 | 江苏中科西北星信息科技有限公司 |
发明人 | 叶小谋;王蒙;唐新余;王轶;陈光 |
代理机构 | 无锡市大为专利商标事务所(普通合伙) | 代理人 | 殷红梅;张涛 |
摘要
本发明涉及一种方法及系统,尤其是一种基于JSON的机构养老数据交互方法及系统,属于移动数据交互的技术领域。按照本发明提供的技术方案,所述基于JSON的机构养老数据交互方法,包括手持终端以及与所述手持终端能进行养老数据交互的养老服务器;所述手持终端与养老服务器间的数据交互采用JSON数据格式。本发明能简化数据交互方式,提高数据传输效率,保证数据通信安全。
1.一种基于JSON的机构养老数据交互方法,包括手持终端以及与所述手持终端能进行养老数据交互的养老服务器;其特征是:所述手持终端与养老服务器间的数据交互采用JSON数据格式;
在采用JSON数据格式进行养老数据交互时,确定待交换养老数据的数据包协议格式,并对确定数据包协议格式的养老数据进行数据包封装,以得到JSONObject的封装数据包,对所述封装数据包再依次进行压缩与加密,以得到压缩加密数据包,以通过压缩加密数据包在手持终端与养老服务器间进行所需的数据交互;
所述确定待交换养老数据的数据包协议格式,协议格式包括类型码、业务数据、删除数据以及更新数据;
数据交换中,在接收到压缩解密数据包后,需要进行解密、解压缩以及解析过程,其中,解密过程为上述加密过程的逆过程,解密过程根据上述加密过程进行确定;解压缩是压缩的逆过程,用Inflater类充当解压器;将要解压的字符串转化为字节数组,然后将其输入到解压器中,输出为原始的字节数组,再通过toString()方法将其还原为原始的字符串;在解压时压缩策略和压缩级别必须和压缩时设置的值一致,同时字符转字节必须要指定相同的编码方式;
数据解析模块是对数据封装模块的逆运算,完成对协议包的解析;解析将协议包数据首先得构建JSONObject对象,然后通过协议包中的各个字段名获得其具体的值或对象,据此来进行下一步的业务操作;根据用户名密码及养老机构编码获得对应的协议包数据;
所述手持终端在发送请求之前,需要按照数据封装模块的要求把发送的业务数据按照数据包协议封装为JSONObject;其次经过压缩模块对封装好的数据进行压缩,然后经过加密对压缩后的数据进行加密,最后将加密输出的数据发送出去;
养老服务器接受到请求之后,首先要对其进行解密,并将解密之后的数据作为解压的输入,然后通过数据解析模块取得协议包定义的字段,并据此来判断是否需要进行业务处理,若需要则进行压缩和加密之后向手持终端发送养老服务器的响应,否则这次通信过程结束。
基于JSON的机构养老数据交互方法及系统\n技术领域\n[0001] 本发明涉及一种方法及系统,尤其是一种基于JSON的机构养老数据交互方法及系统,属于移动数据交互的技术领域。\n背景技术\n[0002] 随着宽带无线接入技术和移动终端技术的发展,人们迫切希望移动终端能够随时随地的从互联网获取信息和服务。随着移动互联网的兴起,各种各样的手持终端应用成为了获取服务的主要入口,而服务器端则承担了各种服务的数据存储和计算功能。如何保证手持终端和服务器端之间安全、高效的数据交互,成为了开发者首要考虑的问题。\n[0003] 传统的手持终端与服务器端数据交互方法有两种:一种方法是纯文本和简单的名称/值对,可根据需求添加字段,但是随意性较大,通用性和灵活性不高;另一种是基于XML(extensible markup language)的方法,XML是一种标记语言,使用时可以按需创建新的标记。带标记的元素是XML文档的构造块,此种元素可以有若干个属性,并可以包含零个或多个子元素,这些子元素可以是文本,也可以是带标记的元素。但是XML作为数据交互格式的数据包会包含大量重复的标记,会导致数据量的增大。此外,XML解析速度较慢、效率不高。\n所以采用一种快速、高效的数据交互方法显得尤为关键。\n发明内容\n[0004] 本发明的目的是克服现有技术中存在的不足,提供一种基于JSON的机构养老数据交互方法及系统,其能简化数据交互方式,提高数据传输效率,保证数据通信安全。\n[0005] 按照本发明提供的技术方案,所述基于JSON的机构养老数据交互方法,包括手持终端以及与所述手持终端能进行养老数据交互的养老服务器;所述手持终端与养老服务器间的数据交互采用JSON数据格式。\n[0006] 在采用JSON数据格式进行养老数据交互时,确定待交换养老数据的数据包协议格式,并对确定数据包协议格式的养老数据进行数据包封装,以得到JSONObject的封装数据包,对所述封装数据包再依次进行压缩与加密,以得到压缩加密数据包,以通过压缩加密数据包在手持终端与养老服务器间进行所需的数据交互。\n[0007] 所述确定待交换养老数据的数据包协议格式包括类型码、业务数据、删除数据以及更新数据。\n[0008] 一种基于JSON的机构养老数据交互系统,包括手持终端以及与所述手持终端能进行养老数据交互的养老服务器;所述手持终端与养老服务器间的数据交互采用JSON数据格式。\n[0009] 在采用JSON数据格式进行养老数据交互时,确定待交换养老数据的数据包协议格式,并对确定数据包协议格式的养老数据进行数据包封装,以得到JSONObject的封装数据包,对所述封装数据包再依次进行压缩与加密,以得到压缩加密数据包,以通过压缩加密数据包在手持终端与养老服务器间进行所需的数据交互。\n[0010] 所述确定待交换养老数据的数据包协议格式包括类型码、业务数据、删除数据以及更新数据。\n[0011] 本发明的优点:所述手持终端与养老服务器间的数据交互采用JSON数据格式,能简化数据交互方式,提高数据传输效率,保证数据通信安全。\n附图说明\n[0012] 图1为本发明的流程图。\n[0013] 图2为本发明的压缩示意图。\n[0014] 图3为本发明解压的示意图。\n[0015] 图4为本发明加解密的示意图。\n具体实施方式\n[0016] 下面结合具体附图和实施例对本发明作进一步说明。\n[0017] 如图1所示:为了能简化数据交互方式,提高数据传输效率,本发明基于JSON的机构养老数据交互系统,包括手持终端以及与所述手持终端能进行养老数据交互的养老服务器;所述手持终端与养老服务器间的数据交互采用JSON数据格式。\n[0018] 具体地,JavaScript Object Notation(以下简称JSON)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式。JSON采用两种结构:1)“名称/值”对的集合,“名称/值”能表示对象的属性,对象实际上就是属性的集合,所以这个结构可以用来表示对象,在典型的JSON格式中采用“{}”来表示一个JSON对象。2)、值的有序列表,可以表示对象的集合,所以JSON能够表示一个复杂对象的集合。在典型的JOSN格式中,采用“[]”来表示JSON数组。基于JAVA平台中已经有了比较成熟的用于处理JSON数据的相关类库,如org.json包能很方便的生成和解析JSON。\n[0019] 在采用JSON数据格式进行养老数据交互时,确定待交换养老数据的数据包协议格式,并对确定数据包协议格式的养老数据进行数据包封装,以得到JSONObject的封装数据包,对所述封装数据包再依次进行压缩与加密,以得到压缩加密数据包,以通过压缩加密数据包在手持终端与养老服务器间进行所需的数据交互。本发明实施例中,手持终端可以为现有常用的智能手机、智能平板等终端设备,数据交互是指手持终端与养老服务器间数据相互传输,即手持终端与养老服务器间的数据交互中均采用JSON数据格式。在手持终端向养老服务器传输数据时,手持终端需要将压缩加密数据包传输至养老服务器内;而养老服务器向手持终端传输数据时,养老服务器需要将压缩加密数据包传输至手持终端。而养老服务器或手持终端接收到压缩加密数据包后,需要对压缩加密数据包进行对应的解密以及解析过程,下面对具体的实施过程进行详细说明。\n[0020] 在确定养老数据的数据包协议格式时,所述数据包协议是一个JSONObject对象,包含OperationCode(类型码)、OperationData(业务数据)、DeleteData(删除数据)及UpdateData(更新数据)四个字段,所述字段是根据手持终端和养老服务器的数据同步要求,结合养老机构的业务需求特点而确定。具体格式如下表一所示。\n[0021] 表一:数据包协议格式\n[0022]\n[0023] OperationCode类型码为一个值,表明数据交互中的各种操作及状态,分为上传状态码和下载状态码两大类。其中,上传状态码用于手持终端向服务器端发送请求,表明手持终端进行业务操作类型,如登录认证、数据更新等;下载状态码用于养老服务器端向手持终端返回响应数据,表明养老服务器在进行业务操作时的各种状态,如密码错误、网络异常等。所述类型码是由机构养老管理系统的业务需求而决定的,随着业务的扩展而动态调整。\n下面将以系统登录过程为例,介绍此系统的数据交互过程。登录过程中用到的业务类型码如表二所示。\n[0024] 表二:业务类型码\n[0025]\n[0026] OperationData业务数据是一个JSONObject对象,不同的类型码对应着不同的属性。如登录时上传类型码为Login,业务数据中所包含的数据为用户名、密码及机构编码三个属性,这就能唯一确定此用户与养老机构的隶属关系。\n[0027] DeleteData删除数据及UpdateData更新数据均为一个JSONArray对象,用于手持终端和养老服务器之间数据同步。本发明实施例中,采用的是基于时间戳的数据同步机制,当手持终端向养老服务器发出数据更新请求时,对应的类型码为Refresh,业务数据为包含此时手持终端的时间戳t;养老服务器经过解析之后得到此时间戳t,然后根据此时间戳t与养老服务器各个业务表的时间戳t比较,若是存在比此时间戳t还大的业务表,则将对应的业务数据按照协议包格式封装到UpdateData字段或者DeleteData字段之中。手持终端解析协议包,若上述两个字段有对应的内容,则手持终端进行对应的数据删除或者数据插入操作来保持数据的一致性。\n[0028] 数据包封装模是按照上述数据包协议格式进行数据拼装,数据包协议就是一个JSONObject,各个字段又根据需求嵌套了JSONObject、JSONArray等。基于java的org.json包提供了一系列简单的方法和工具用于处理JSON数据。其中org.json.JSONbject类提供了多种构造器来构建JSONbject,使用put方法来添加名值对、get方法获得字段所对应的值或对象等。例如当手持终端登录时,此时上传类型码为Login,操作数据为用户名、密码及养老机构编号这三个数据。由于此时既没有要删除的数据也没有要更新的数据,所以上述两个字段为空,上述的具体实施过程为本技术领域人员所熟知,此处不再详述。\n[0029] 数据压缩主要目的是减少手持终端流量及节省服务器端宽带,其逆过程为解压缩。在养老机构管理系统实际应用过程中,一方面手持终端在初次初始化数据时需要向养老服务器请求大量基础数据;另一方面手持终端需要频繁的向养老服务器上传老人护理情况等业务操作信息。基于此种情况考虑将数据进行压缩后传输,减少数据传输量,节省服务器宽带。\n[0030] 在JAVA平台中有java.util.zip包中的Deflater类和Inflater类提供了基于DEFLATE算法的压缩和解压的相关方法,它们通过JNI技术调用ZLIB压缩库支持一般的压缩需求。压缩通过Deflater类提供支持,主要包括两个步骤。首先将压缩的字符串转化为字节数组,在本发明实施例中,通过getBytes()方法完成字符串到字节数组的转换,在换换后设置压缩策略及压缩速度在压缩器中执行压缩。压缩策略取决于压缩内容的特征,可选的有FILTERED,最适用于主要由小值组成并具有某种程度随意分布的数据的压缩策略;\nHUFFMAN_ONLY,仅适用于Huffman编码的压缩策略;以及通用的默认压缩策略DEFAULT_STRATEGY,在本发明实施例中采用此级别。压缩级别有0到9十个级别可选,0表示没有压缩,\n9代表最佳压缩效果,具体如图2所示。\n[0031] 数据加密主要保证数据通信的安全性,其逆过程为解密。加解密对象是经过封装的协议包数据。在本发明实施中,采用对称加密算法对字节流进行加密,对称加密是指加密和解密使用相同的密钥。基于java的加解密框架JCF提供了一系列用于加密和解密的工具,核心类为Cipher。调用getInstance(“DES”)生成Cipher对象,指定此加密器采用DES加密算法,也可以指定其他方式的加密算法如AES/RSA;然后调用init()方法对Cipher对象进行初始化,同时设置加密密钥及加密模式(加密或解密);最后调用doFinal()进行实际的加密或解密,这取决于初始化时设置的加密模式。若初始化模式是加密,则doFinal进行加密;\n若初始化的模式是解密,则进行解密,如图4所示。\n[0032] 本发明实施例中,在数据交换中,在接收到压缩解密数据包后,需要进行解密、解压缩以及解析过程,其中,解密过程为上述加密过程的逆过程,解密过程根据上述加密过程进行确定,具体过程为本技术领域人员所熟知,此处不再赘述。解压缩是压缩的逆过程,用Inflater类充当解压器。首先将要解压的字符串转化为字节数组,然后将其输入到解压器中,输出为原始的字节数组,再通过toString()方法将其还原为原始的字符串。需要注意的是在解压时压缩策略和压缩级别必须和压缩时设置的值一致,同时字符转字节必须要指定相同的编码方式,如图3所示。\n[0033] 数据解析模块是对数据封装模块的逆运算,完成对协议包的解析。解析将协议包数据首先得构建JSONObject对象,然后通过协议包中的各个字段名获得其具体的值或对象,据此来进行下一步的业务操作。例如当获得上述协议包时,首先使用JSONObject(String)构建JSONObject对象,调用get(“OperationCode”)获得类型码为Login,得知为登录认证业务操作;然后调用getJSONObject(“OperationData”)得到登录认证所需数据,根据用户名密码及养老机构编码获得对应数据。\n[0034] 若是登录认证出了问题,例如密码或用户名不正确,则上述OperationCode对应的值为LOGIN_ERROR,表明登录信息有误。其他的字段为空,然后按照JSON数据封装过程,将此内容作为登录错误协议包返回给手持终端。手持终端按照上述JSON数据解析,获得登录状态码为LOGIN_ERROR,然后提示手持终端用户名或密码错误。\n[0035] 下面通过手持终端和养老服务器端的一次数据交互过程来对本发明的工作过程进行说明。首先,手持终端在发送请求之前,需要按照JSON封装模块的要求把发送的业务数据按照数据包协议封装为JSONObject。其次经过压缩模块对封装好的数据进行压缩,然后经过加密对压缩后的数据进行加密,最后将加密输出的数据发送出去。\n[0036] 养老服务器接受到请求之后,首先要对其进行解密,并将解密之后的数据作为解压的输入,然后通过JSON解析模块取得协议包定义的字段,并据此来判断是否需要进行业务处理,若需要则进行压缩和加密之后向手持终端发送养老服务器的响应,否则这次通信过程结束。
法律信息
- 2019-07-16
- 2019-07-05
著录事项变更
申请人由无锡中科西北星科技有限公司变更为江苏中科西北星信息科技有限公司
地址由214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座变更为214135 江苏省无锡市新区菱湖大道200号中国传感网国际创新园C座
- 2016-10-19
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201610258202.5
申请日: 2016.04.22
- 2016-09-21
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-08-21
|
2013-04-18
| | |
2
| |
2014-04-02
|
2013-12-31
| | |
3
| |
2015-12-23
|
2015-09-15
| | |
4
| |
2016-03-02
|
2014-03-14
| | |
5
| |
2015-01-21
|
2013-07-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |