基于json的機構養(yǎng)老數據交互方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種方法及系統(tǒng),尤其是一種基于JSON的機構養(yǎng)老數據交互方法及系統(tǒng),屬于移動數據交互的技術領域。按照本發(fā)明提供的技術方案,所述基于JSON的機構養(yǎng)老數據交互方法,包括手持終端以及與所述手持終端能進行養(yǎng)老數據交互的養(yǎng)老服務器;所述手持終端與養(yǎng)老服務器間的數據交互采用JSON數據格式。本發(fā)明能簡化數據交互方式,提高數據傳輸效率,保證數據通信安全。
【專利說明】
基于JSON的機構養(yǎng)老數據交互方法及系統(tǒng)
技術領域
[0001] 本發(fā)明涉及一種方法及系統(tǒng),尤其是一種基于JS0N的機構養(yǎng)老數據交互方法及系 統(tǒng),屬于移動數據交互的技術領域。
【背景技術】
[0002] 隨著寬帶無線接入技術和移動終端技術的發(fā)展,人們迫切希望移動終端能夠隨時 隨地的從互聯網獲取信息和服務。隨著移動互聯網的興起,各種各樣的手持終端應用成為 了獲取服務的主要入口,而服務器端則承擔了各種服務的數據存儲和計算功能。如何保證 手持終端和服務器端之間安全、高效的數據交互,成為了開發(fā)者首要考慮的問題。
[0003] 傳統(tǒng)的手持終端與服務器端數據交互方法有兩種:一種方法是純文本和簡單的名 稱/值對,可根據需求添加字段,但是隨意性較大,通用性和靈活性不高;另一種是基于XML (extensible markup language)的方法,XML是一種標記語言,使用時可以按需創(chuàng)建新的標 記。帶標記的元素是XML文檔的構造塊,此種元素可以有若干個屬性,并可以包含零個或多 個子元素,這些子元素可以是文本,也可以是帶標記的元素。但是XML作為數據交互格式的 數據包會包含大量重復的標記,會導致數據量的增大。此外,XML解析速度較慢、效率不高。 所以采用一種快速、高效的數據交互方法顯得尤為關鍵。
【發(fā)明內容】
[0004] 本發(fā)明的目的是克服現有技術中存在的不足,提供一種基于JS0N的機構養(yǎng)老數據 交互方法及系統(tǒng),其能簡化數據交互方式,提高數據傳輸效率,保證數據通信安全。
[0005] 按照本發(fā)明提供的技術方案,所述基于JS0N的機構養(yǎng)老數據交互方法,包括手持 終端以及與所述手持終端能進行養(yǎng)老數據交互的養(yǎng)老服務器;所述手持終端與養(yǎng)老服務器 間的數據交互采用JS0N數據格式。
[0006] 在采用JS0N數據格式進行養(yǎng)老數據交互時,確定待交換養(yǎng)老數據的數據包協(xié)議格 式,并對確定數據包協(xié)議格式的養(yǎng)老數據進行數據包封裝,以得到JSONObject的封裝數據 包,對所述封裝數據包再依次進行壓縮與加密,以得到壓縮加密數據包,以通過壓縮加密數 據包在手持終端與養(yǎng)老服務器間進行所需的數據交互。
[0007] 所述確定待交換養(yǎng)老數據的數據包協(xié)議格式包括類型碼、業(yè)務數據、刪除數據以 及更新數據。
[0008] 一種基于JS0N的機構養(yǎng)老數據交互系統(tǒng),包括手持終端以及與所述手持終端能進 行養(yǎng)老數據交互的養(yǎng)老服務器;所述手持終端與養(yǎng)老服務器間的數據交互采用JS0N數據格 式。
[0009] 在采用JS0N數據格式進行養(yǎng)老數據交互時,確定待交換養(yǎng)老數據的數據包協(xié)議格 式,并對確定數據包協(xié)議格式的養(yǎng)老數據進行數據包封裝,以得到JSONObject的封裝數據 包,對所述封裝數據包再依次進行壓縮與加密,以得到壓縮加密數據包,以通過壓縮加密數 據包在手持終端與養(yǎng)老服務器間進行所需的數據交互。
[0010] 所述確定待交換養(yǎng)老數據的數據包協(xié)議格式包括類型碼、業(yè)務數據、刪除數據以 及更新數據。
[0011] 本發(fā)明的優(yōu)點:所述手持終端與養(yǎng)老服務器間的數據交互采用JS0N數據格式,能 簡化數據交互方式,提高數據傳輸效率,保證數據通信安全。
【附圖說明】
[0012] 圖1為本發(fā)明的流程圖。
[0013]圖2為本發(fā)明的壓縮不意圖。
[0014]圖3為本發(fā)明解壓的示意圖。
[0015]圖4為本發(fā)明加解密的示意圖。
【具體實施方式】
[0016]下面結合具體附圖和實施例對本發(fā)明作進一步說明。
[0017]如圖1所示:為了能簡化數據交互方式,提高數據傳輸效率,本發(fā)明基于JS0N的機 構養(yǎng)老數據交互系統(tǒng),包括手持終端以及與所述手持終端能進行養(yǎng)老數據交互的養(yǎng)老服務 器;所述手持終端與養(yǎng)老服務器間的數據交互采用JS0N數據格式。
[0018] 具體地,JavaScript Object Notation(以下簡稱JS0N)是一種輕量級的數據交換 格式,它采用完全獨立于語言的文本格式。JS0N采用兩種結構:1)"名稱/值"對的集合,"名 稱/值"能表示對象的屬性,對象實際上就是屬性的集合,所以這個結構可以用來表示對象, 在典型的JS0N格式中采用"{}"來表示一個JS0N對象。2)、值的有序列表,可以表示對象的集 合,所以JS0N能夠表示一個復雜對象的集合。在典型的J0SN格式中,采用"[]"來表示JS0N數 組?;贘AVA平臺中已經有了比較成熟的用于處理JS0N數據的相關類庫,如org.json包能 很方便的生成和解析JS0N。
[0019] 在采用JS0N數據格式進行養(yǎng)老數據交互時,確定待交換養(yǎng)老數據的數據包協(xié)議格 式,并對確定數據包協(xié)議格式的養(yǎng)老數據進行數據包封裝,以得到JSONObject的封裝數據 包,對所述封裝數據包再依次進行壓縮與加密,以得到壓縮加密數據包,以通過壓縮加密數 據包在手持終端與養(yǎng)老服務器間進行所需的數據交互。本發(fā)明實施例中,手持終端可以為 現有常用的智能手機、智能平板等終端設備,數據交互是指手持終端與養(yǎng)老服務器間數據 相互傳輸,即手持終端與養(yǎng)老服務器間的數據交互中均采用JS0N數據格式。在手持終端向 養(yǎng)老服務器傳輸數據時,手持終端需要將壓縮加密數據包傳輸至養(yǎng)老服務器內;而養(yǎng)老服 務器向手持終端傳輸數據時,養(yǎng)老服務器需要將壓縮加密數據包傳輸至手持終端。而養(yǎng)老 服務器或手持終端接收到壓縮加密數據包后,需要對壓縮加密數據包進行對應的解密以及 解析過程,下面對具體的實施過程進行詳細說明。
[0020] 在確定養(yǎng)老數據的數據包協(xié)議格式時,所述數據包協(xié)議是一個JSONObject對象, 包含0perationCode(類型碼)、0perationData(業(yè)務數據)、DeleteData(刪除數據)及 UpdateData(更新數據)四個字段,所述字段是根據手持終端和養(yǎng)老服務器的數據同步要 求,結合養(yǎng)老機構的業(yè)務需求特點而確定。具體格式如下表一所示。
[0021 ]表一:數據包協(xié)議格式
[0022]
[0023] OperationCode類型碼為一個值,表明數據交互中的各種操作及狀態(tài),分為上傳狀 態(tài)碼和下載狀態(tài)碼兩大類。其中,上傳狀態(tài)碼用于手持終端向服務器端發(fā)送請求,表明手持 終端進行業(yè)務操作類型,如登錄認證、數據更新等;下載狀態(tài)碼用于養(yǎng)老服務器端向手持終 端返回響應數據,表明養(yǎng)老服務器在進行業(yè)務操作時的各種狀態(tài),如密碼錯誤、網絡異常 等。所述類型碼是由機構養(yǎng)老管理系統(tǒng)的業(yè)務需求而決定的,隨著業(yè)務的擴展而動態(tài)調整。 下面將以系統(tǒng)登錄過程為例,介紹此系統(tǒng)的數據交互過程。登錄過程中用到的業(yè)務類型碼 如表二所示。
[0025] OperationData業(yè)務數據是一個JSONObject對象,不同的類型碼對應著不同的屬 性。如登錄時上傳類型碼為Login,業(yè)務數據中所包含的數據為用戶名、密碼及機構編碼三 個屬性,這就能唯一確定此用戶與養(yǎng)老機構的隸屬關系。
[0026] DeleteData刪除數據及UpdateData更新數據均為一個JSONArray對象,用于手持 終端和養(yǎng)老服務器之間數據同步。本發(fā)明實施例中,采用的是基于時間戳的數據同步機制, 當手持終端向養(yǎng)老服務器發(fā)出數據更新請求時,對應的類型碼為Refresh,業(yè)務數據為包含 此時手持終端的時間戳t;養(yǎng)老服務器經過解析之后得到此時間戳t,然后根據此時間戳t與 養(yǎng)老服務器各個業(yè)務表的時間戳t比較,若是存在比此時間戳t還大的業(yè)務表,則將對應的 業(yè)務數據按照協(xié)議包格式封裝到UpdateData字段或者DeleteData字段之中。手持終端解析 協(xié)議包,若上述兩個字段有對應的內容,則手持終端進行對應的數據刪除或者數據插入操 作來保持數據的一致性。
[0027] 數據包封裝模是按照上述數據包協(xié)議格式進行數據拼裝,數據包協(xié)議就是一個 了30勵13」6(31:,各個字段又根據需求嵌套了幾0勵13」6(31:、幾0祖1'抑7等。基于」3¥3的〇找.」8〇11 包提供了一系列簡單的方法和工具用于處理JS0N數據。其中org. json. JSONb ject類提供了 多種構造器來構建JSONbject,使用put方法來添加名值對、get方法獲得字段所對應的值或 對象等。例如當手持終端登錄時,此時上傳類型碼為Login,操作數據為用戶名、密碼及養(yǎng)老 機構編號這三個數據。由于此時既沒有要刪除的數據也沒有要更新的數據,所以上述兩個 字段為空,上述的具體實施過程為本技術領域人員所熟知,此處不再詳述。
[0028] 數據壓縮主要目的是減少手持終端流量及節(jié)省服務器端寬帶,其逆過程為解壓 縮。在養(yǎng)老機構管理系統(tǒng)實際應用過程中,一方面手持終端在初次初始化數據時需要向養(yǎng) 老服務器請求大量基礎數據;另一方面手持終端需要頻繁的向養(yǎng)老服務器上傳老人護理情 況等業(yè)務操作信息。基于此種情況考慮將數據進行壓縮后傳輸,減少數據傳輸量,節(jié)省服務 器寬帶。
[0029] 在JAVA平臺中有java .util.zip包中的Def later類和Inf later類提供了基于 DEFLATE算法的壓縮和解壓的相關方法,它們通過JNI技術調用ZLIB壓縮庫支持一般的壓縮 需求。壓縮通過Def later類提供支持,主要包括兩個步驟。首先將壓縮的字符串轉化為字節(jié) 數組,在本發(fā)明實施例中,通過getBytes()方法完成字符串到字節(jié)數組的轉換,在換換后設 置壓縮策略及壓縮速度在壓縮器中執(zhí)行壓縮。壓縮策略取決于壓縮內容的特征,可選的有 FILTERED,最適用于主要由小值組成并具有某種程度隨意分布的數據的壓縮策略; HUFFMAN_0NLY,僅適用于Huffman編碼的壓縮策略;以及通用的默認壓縮策略DEFAULT_ STRATEGY,在本發(fā)明實施例中采用此級別。壓縮級別有0到9十個級別可選,0表示沒有壓縮, 9代表最佳壓縮效果,具體如圖2所示。
[0030] 數據加密主要保證數據通信的安全性,其逆過程為解密。加解密對象是經過封裝 的協(xié)議包數據。在本發(fā)明實施中,采用對稱加密算法對字節(jié)流進行加密,對稱加密是指加密 和解密使用相同的密鑰。基于java的加解密框架JCF提供了一系列用于加密和解密的工具, 核心類為(^口1161'。調用861:1118丨311〇6("0£3")生成(^口1161'對象,指定此加密器采用0£3加密算 法,也可以指定其他方式的加密算法如AES/RSA;然后調用ini t〇方法對Cipher對象進行初 始化,同時設置加密密鑰及加密模式(加密或解密);最后調用doFinalO進行實際的加密或 解密,這取決于初始化時設置的加密模式。若初始化模式是加密,則doFinal進行加密;若初 始化的模式是解密,則進行解密,如圖4所示。
[0031 ]本發(fā)明實施例中,在數據交換中,在接收到壓縮解密數據包后,需要進行解密、解 壓縮以及解析過程,其中,解密過程為上述加密過程的逆過程,解密過程根據上述加密過程 進行確定,具體過程為本技術領域人員所熟知,此處不再贅述。解壓縮是壓縮的逆過程,用 Inflater類充當解壓器。首先將要解壓的字符串轉化為字節(jié)數組,然后將其輸入到解壓器 中,輸出為原始的字節(jié)數組,再通過toStringO方法將其還原為原始的字符串。需要注意的 是在解壓時壓縮策略和壓縮級別必須和壓縮時設置的值一致,同時字符轉字節(jié)必須要指定 相同的編碼方式,如圖3所示。
[0032]數據解析模塊是對數據封裝模塊的逆運算,完成對協(xié)議包的解析。解析將協(xié)議包 數據首先得構建JSONOb ject對象,然后通過協(xié)議包中的各個字段名獲得其具體的值或對 象,據此來進行下一步的業(yè)務操作。例如當獲得上述協(xié)議包時,首先使用JSONObject (String)構建JSONOb ject對象,調用get ( "OperationCode")獲得類型碼為Login,得知為登 錄認證業(yè)務操作;然后調用getJS0N0bject( "OperationData")得到登錄認證所需數據,根 據用戶名密碼及養(yǎng)老機構編碼獲得對應數據。
[0033] 若是登錄認證出了問題,例如密碼或用戶名不正確,貝lj上述OperationCode對應的 值為L0GIN_ERR0R,表明登錄信息有誤。其他的字段為空,然后按照JS0N數據封裝過程,將此 內容作為登錄錯誤協(xié)議包返回給手持終端。手持終端按照上述JS0N數據解析,獲得登錄狀 態(tài)碼為L0GIN_ERR0R,然后提示手持終端用戶名或密碼錯誤。
[0034] 下面通過手持終端和養(yǎng)老服務器端的一次數據交互過程來對本發(fā)明的工作過程 進行說明。首先,手持終端在發(fā)送請求之前,需要按照JS0N封裝模塊的要求把發(fā)送的業(yè)務數 據按照數據包協(xié)議封裝為JSONOb ject。其次經過壓縮模塊對封裝好的數據進行壓縮,然后 經過加密對壓縮后的數據進行加密,最后將加密輸出的數據發(fā)送出去。
[0035] 養(yǎng)老服務器接受到請求之后,首先要對其進行解密,并將解密之后的數據作為解 壓的輸入,然后通過JS0N解析模塊取得協(xié)議包定義的字段,并據此來判斷是否需要進行業(yè) 務處理,若需要則進行壓縮和加密之后向手持終端發(fā)送養(yǎng)老服務器的響應,否則這次通信 過程結束。
【主權項】
1. 一種基于JSON的機構養(yǎng)老數據交互方法,包括手持終端以及與所述手持終端能進行 養(yǎng)老數據交互的養(yǎng)老服務器;其特征是:所述手持終端與養(yǎng)老服務器間的數據交互采用 JSON數據格式。2. 根據權利要求1所述的基于JSON的機構養(yǎng)老數據交互方法,其特征是,在采用JSON數 據格式進行養(yǎng)老數據交互時,確定待交換養(yǎng)老數據的數據包協(xié)議格式,并對確定數據包協(xié) 議格式的養(yǎng)老數據進行數據包封裝,以得到JSONObject的封裝數據包,對所述封裝數據包 再依次進行壓縮與加密,以得到壓縮加密數據包,以通過壓縮加密數據包在手持終端與養(yǎng) 老服務器間進行所需的數據交互。3. 根據權利要求2所述的基于JSON的機構養(yǎng)老數據交互方法,其特征是,所述確定待交 換養(yǎng)老數據的數據包協(xié)議格式包括類型碼、業(yè)務數據、刪除數據以及更新數據。4. 一種基于JSON的機構養(yǎng)老數據交互系統(tǒng),包括手持終端以及與所述手持終端能進行 養(yǎng)老數據交互的養(yǎng)老服務器;其特征是:所述手持終端與養(yǎng)老服務器間的數據交互采用 JSON數據格式。5. 根據權利要求4所述基于JSON的機構養(yǎng)老數據交互系統(tǒng),其特征是,在采用JSON數據 格式進行養(yǎng)老數據交互時,確定待交換養(yǎng)老數據的數據包協(xié)議格式,并對確定數據包協(xié)議 格式的養(yǎng)老數據進行數據包封裝,以得到JSONObject的封裝數據包,對所述封裝數據包再 依次進行壓縮與加密,以得到壓縮加密數據包,以通過壓縮加密數據包在手持終端與養(yǎng)老 服務器間進行所需的數據交互。6. 根據權利要求5所述基于JSON的機構養(yǎng)老數據交互系統(tǒng),其特征是,所述確定待交換 養(yǎng)老數據的數據包協(xié)議格式包括類型碼、業(yè)務數據、刪除數據以及更新數據。
【文檔編號】H04L29/06GK105959263SQ201610258202
【公開日】2016年9月21日
【申請日】2016年4月22日
【發(fā)明人】葉小謀, 王蒙, 唐新余, 王軼, 陳 光
【申請人】無錫中科西北星科技有限公司