專利名稱:基于json數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),尤其涉及一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,在企業(yè)應(yīng)用環(huán)境中,一般通過客戶端與服務(wù)器端交換數(shù)據(jù),及系統(tǒng)與系統(tǒng)之間交換數(shù)據(jù)來實(shí)現(xiàn)通信。就現(xiàn)有技術(shù)而言,在鐵路票務(wù)系統(tǒng)及其他系統(tǒng)中,一般通過Socket協(xié)議與外部系統(tǒng)進(jìn)行數(shù)據(jù)交換,客戶端與服務(wù)器端基本上采用自定義報(bào)文格式(定長或分隔符)來交換數(shù)據(jù)。但是,由于自定義報(bào)文格式缺乏統(tǒng)一標(biāo)準(zhǔn),其隨意性較大,相應(yīng)的通用性和靈活性較低。隨著近年來擴(kuò)展標(biāo)記語言(ExtensibIeMarkup Language,以下簡稱XML)技術(shù)的發(fā)展, 現(xiàn)有的系統(tǒng)一般采用標(biāo)準(zhǔn)的XML作為相應(yīng)的具體應(yīng)用的數(shù)據(jù)交換標(biāo)準(zhǔn),但XML數(shù)據(jù)格式的數(shù)據(jù)包相對較大,其包含了大量重復(fù)標(biāo)記內(nèi)容,相應(yīng)對通信網(wǎng)絡(luò)帶寬有較高要求。因此,如何提高鐵路票務(wù)系統(tǒng)的通信效率,并提高鐵路票務(wù)系統(tǒng)的通用性和靈活性就成為亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明提供一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng)。本發(fā)明提供一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法,包括接收客運(yùn)信息發(fā)送請求,所述客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù);根據(jù)所述客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議;根據(jù)所述JSON數(shù)據(jù)協(xié)議對所述目標(biāo)數(shù)據(jù)進(jìn)行封裝,生成封裝數(shù)據(jù);根據(jù)所述客運(yùn)信息發(fā)送請求向接收方發(fā)送所述封裝數(shù)據(jù)。本發(fā)明提供一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信系統(tǒng),包括客運(yùn)信息發(fā)送請求接收模塊,用于接收客運(yùn)信息發(fā)送請求,所述客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù);JSON數(shù)據(jù)協(xié)議調(diào)用模塊,用于根據(jù)所述客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議;數(shù)據(jù)封裝模塊,用于根據(jù)所述JSON數(shù)據(jù)協(xié)議對所述目標(biāo)數(shù)據(jù)進(jìn)行封裝,生成封裝數(shù)據(jù);封裝數(shù)據(jù)發(fā)送模塊,用于根據(jù)所述客運(yùn)信息發(fā)送請求向接收方發(fā)送所述封裝數(shù)據(jù)。本發(fā)明的基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng)可以使票務(wù)系統(tǒng)的各個(gè)客戶端和票務(wù)系統(tǒng)間簡單且高效地交換客運(yùn)信息,可以極大地提高票務(wù)系統(tǒng)的通用性和靈活性,從而使票務(wù)系統(tǒng)能更便捷且高效地為旅客服務(wù),相應(yīng)提高旅客購票的效率和滿意度。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法實(shí)施例一的結(jié)構(gòu)圖;圖2為本發(fā)明基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信系統(tǒng)實(shí)施例一的結(jié)構(gòu)圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法實(shí)施例一的結(jié)構(gòu)圖,如圖1 所示,本實(shí)施例的基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法可以包括以下步驟步驟101、接收客運(yùn)信息發(fā)送請求,客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù)。舉例來說,本實(shí)施例的基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法可以應(yīng)用于票務(wù)系統(tǒng)中,以車站的票務(wù)系統(tǒng)為例,配置于各個(gè)車站的票務(wù)系統(tǒng)一般有多個(gè)客戶端,車站的票務(wù)系統(tǒng)一方面通過這些客戶端來為旅客提供與該車站有關(guān)的各次列車的票務(wù)信息,另一方面配置于車站的售票窗口的客戶端還需要根據(jù)票務(wù)信息為旅客提供售票等服務(wù)。當(dāng)車站的票務(wù)系統(tǒng)的某一客戶端需要向票務(wù)系統(tǒng)的中心服務(wù)器發(fā)送客運(yùn)信息時(shí),首先由本車站的票務(wù)系統(tǒng)的負(fù)責(zé)接收和發(fā)送客運(yùn)信息的客戶端接收客運(yùn)信息發(fā)送請求,該客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù),其中目標(biāo)數(shù)據(jù)中包含有相應(yīng)的客運(yùn)信息,例如車次、 站名、到站和離站時(shí)間等相關(guān)信息。這樣本車站的票務(wù)系統(tǒng)的負(fù)責(zé)接收和發(fā)送客運(yùn)信息的客戶端就可以獲取客運(yùn)信息發(fā)送請求所包含的需要發(fā)送的目標(biāo)數(shù)據(jù),從而可以執(zhí)行后續(xù)步驟。步驟102、根據(jù)客運(yùn)信息發(fā)送請求調(diào)用JSON(JavaScript Object Notation,以下簡稱JS0N)數(shù)據(jù)協(xié)議。舉例來說,JSON數(shù)據(jù)協(xié)議是一種輕量級的易于閱讀和編寫,且易于通過計(jì)算機(jī)進(jìn)行解析及生成處理的數(shù)據(jù)交換格式。其為JavaScript ProgrammingLanguage, Standard ECMA-262 3rd Edition-December 1999標(biāo)準(zhǔn)的一個(gè)子集。JSON數(shù)據(jù)協(xié)議采用完全獨(dú)立于計(jì)算機(jī)語言的文本格式,但也使用了類似于C語言(包括C,C++, C#, Java, JavaScript, Perl, Python等)家族的編寫規(guī)則。這些特性使JSON數(shù)據(jù)協(xié)議成為理想的數(shù)據(jù)交換語言。本實(shí)施例為了更有效地傳輸客運(yùn)信息,車站的票務(wù)系統(tǒng)的負(fù)責(zé)接收和發(fā)送客運(yùn)信息的客戶端在接收到客運(yùn)信息發(fā)送請求后,根據(jù)該客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議。優(yōu)選的,JSON數(shù)據(jù)協(xié)議具體可以包括JSON對象結(jié)構(gòu)映射為Map結(jié)構(gòu),JSON數(shù)組結(jié)構(gòu)映射為列表結(jié)構(gòu)。舉例來說,本發(fā)明在現(xiàn)有JSON數(shù)據(jù)協(xié)議基礎(chǔ)上,對JSON數(shù)據(jù)協(xié)議進(jìn)行進(jìn)一步的簡化,從而降低數(shù)據(jù)包大小,使網(wǎng)絡(luò)通訊效率提高,并增強(qiáng)數(shù)據(jù)交換的便捷性和靈活性。本實(shí)施例開創(chuàng)性地對JSON數(shù)據(jù)協(xié)議進(jìn)行封裝,將其映射為計(jì)算機(jī)系統(tǒng)開發(fā)人員經(jīng)常使用的Map和列表(List)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。其具體通過將JSON對象結(jié)構(gòu)映射為Map結(jié)構(gòu),JSON數(shù)組 (Array)結(jié)構(gòu)映射為列表結(jié)構(gòu)。本實(shí)施例通過對JSON數(shù)據(jù)協(xié)議的映射,可以相應(yīng)降低票務(wù)系統(tǒng)的與票務(wù)信息相對應(yīng)的數(shù)據(jù)與Map和列表結(jié)構(gòu)的轉(zhuǎn)換成本,從而有效地提高票務(wù)系統(tǒng)的運(yùn)行性能。在JSON對象可直接映射為C語言Map結(jié)構(gòu)的鍵值對的情況下,當(dāng)車站的票務(wù)系統(tǒng)的客戶端發(fā)送的客運(yùn)信息發(fā)送請求到達(dá)服務(wù)器端時(shí),服務(wù)器端通過相應(yīng)的JSON解析器,將文本內(nèi)容直接轉(zhuǎn)換為Map結(jié)構(gòu),從而使后續(xù)的數(shù)據(jù)操作過程與標(biāo)準(zhǔn)的Map結(jié)構(gòu)的數(shù)據(jù)操作過程一致。對于基于C語言開發(fā)的票務(wù)系統(tǒng)來說,就可以方便地實(shí)現(xiàn)其客戶端與服務(wù)端進(jìn)行數(shù)據(jù)交換,同時(shí),也簡化票務(wù)系統(tǒng)的各層之間的數(shù)據(jù)交換。由于C語言是非面向?qū)ο笳Z言,其復(fù)雜數(shù)據(jù)結(jié)構(gòu)一般都通過結(jié)構(gòu)體和數(shù)組形式表示,由于結(jié)構(gòu)體缺乏靈活性和擴(kuò)展性,且基于不同語言的系統(tǒng)間交換數(shù)據(jù)也很困難,而JSON數(shù)據(jù)協(xié)議本質(zhì)是文本,非常適合系統(tǒng)之間交換數(shù)據(jù),可以支持當(dāng)前計(jì)算機(jī)系統(tǒng)開發(fā)人員所常用的大部分計(jì)算機(jī)開發(fā)語言。就JSON對象結(jié)構(gòu)來說,對象是一個(gè)無序的“ ‘名稱/值’對”的集合。一個(gè)對象以 “{”(左括號)開始,“}”(右括號)結(jié)束。每個(gè)“名稱”后跟一個(gè)“”(冒號);“ ‘名稱/ 值’對”之間使用“,”(逗號)分隔。而Map結(jié)構(gòu)也是一個(gè)無序的“ ‘名稱/值’對”集合,這樣JSON對象結(jié)構(gòu)可直接映射為Map結(jié)構(gòu)。由于Map結(jié)構(gòu)可提供非常簡單的操作函數(shù),如 map_get, map_put等函數(shù),從而易于相應(yīng)數(shù)據(jù)操作的進(jìn)行。就JSON數(shù)組結(jié)構(gòu)來說,其本質(zhì)為數(shù)組(Array),是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間使用“,”(逗號)分隔。而列表結(jié)構(gòu)是一個(gè)動(dòng)態(tài)鏈表結(jié)構(gòu),動(dòng)態(tài)鏈表結(jié)構(gòu)也是有序集合,其通過相應(yīng)的索引訪問數(shù)據(jù)項(xiàng)。進(jìn)一步優(yōu)選的,JSON數(shù)據(jù)協(xié)議具體可以包括請求協(xié)議和響應(yīng)協(xié)議。請求協(xié)議包含請求協(xié)議頭以及請求入?yún)?,請求協(xié)議頭以及請求入?yún)鼮镴SON 對象結(jié)構(gòu);響應(yīng)協(xié)議包含響應(yīng)協(xié)議頭,用于響應(yīng)請求協(xié)議頭,根據(jù)請求協(xié)議頭描述相關(guān)元數(shù)據(jù),及認(rèn)證會(huì)話信息;返回協(xié)議包,用于根據(jù)請求入?yún)祷叵鄳?yīng)內(nèi)容;服務(wù)執(zhí)行標(biāo)識,用于標(biāo)識響應(yīng)狀態(tài);消息包,消息包中包含目標(biāo)數(shù)據(jù);以及報(bào)錯(cuò)包,其中,返回協(xié)議包為 JSON數(shù)組結(jié)構(gòu),響應(yīng)協(xié)議頭、服務(wù)執(zhí)行標(biāo)識、消息包和報(bào)錯(cuò)包為JSON對象結(jié)構(gòu)。舉例來說,根據(jù)應(yīng)用場景,JSON數(shù)據(jù)協(xié)議具體可以分為請求協(xié)議以及響應(yīng)協(xié)議兩部分。其中,請求協(xié)議是一種JSON對象結(jié)構(gòu)的集合,其由兩部分構(gòu)成,分別是請求協(xié)議頭 (head)以及請求入?yún)?param),每部分都是一個(gè)JSON對象結(jié)構(gòu)。進(jìn)一步優(yōu)選的,請求協(xié)議頭可以包含服務(wù)名、會(huì)話ID、站代碼和局代碼。請求協(xié)議頭可以包含如表1所示的客運(yùn)信息發(fā)送請求所需要調(diào)用的服務(wù)名,會(huì)話 ID,站代碼和局代碼,以便于票務(wù)系統(tǒng)進(jìn)行后續(xù)的數(shù)據(jù)封裝等操作。表1請求協(xié)議頭格式
權(quán)利要求
1.一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法,其特征在于,包括 接收客運(yùn)信息發(fā)送請求,所述客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù); 根據(jù)所述客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議;根據(jù)所述JSON數(shù)據(jù)協(xié)議對所述目標(biāo)數(shù)據(jù)進(jìn)行封裝,生成封裝數(shù)據(jù); 根據(jù)所述客運(yùn)信息發(fā)送請求向接收方發(fā)送所述封裝數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述JSON數(shù)據(jù)協(xié)議具體包括JSON對象結(jié)構(gòu)映射為Map結(jié)構(gòu),JSON數(shù)組結(jié)構(gòu)映射為列表結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述JSON數(shù)據(jù)協(xié)議具體包括請求協(xié)議和響應(yīng)協(xié)議,所述請求協(xié)議包含請求協(xié)議頭以及請求入?yún)?,所述請求協(xié)議頭以及所述請求入?yún)鼮樗鯦SON對象結(jié)構(gòu); 所述響應(yīng)協(xié)議包含響應(yīng)協(xié)議頭,用于響應(yīng)所述請求協(xié)議頭,根據(jù)所述請求協(xié)議頭描述相關(guān)元數(shù)據(jù),及認(rèn)證會(huì)話{曰息;返回協(xié)議包,用于根據(jù)所述請求入?yún)祷叵鄳?yīng)內(nèi)容; 服務(wù)執(zhí)行標(biāo)識,用于標(biāo)識響應(yīng)狀態(tài); 消息包,所述消息包中包含目標(biāo)數(shù)據(jù); 以及報(bào)錯(cuò)包,其中,所述返回協(xié)議包為所述JSON數(shù)組結(jié)構(gòu),所述響應(yīng)協(xié)議頭、服務(wù)執(zhí)行標(biāo)識、消息包和報(bào)錯(cuò)包為所述JSON對象結(jié)構(gòu)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述請求協(xié)議頭包含服務(wù)名、會(huì)話ID、站代碼和局代碼。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述請求入?yún)膬?nèi)容包括單個(gè)屬性、 對象和所述JSON數(shù)組結(jié)構(gòu)的數(shù)組中的至少一種數(shù)據(jù)。
6.根據(jù)權(quán)利要求3至5中任一權(quán)利要求所述的方法,其特征在于,若所述服務(wù)執(zhí)行標(biāo)識的狀態(tài)為錯(cuò)誤時(shí),所述報(bào)錯(cuò)包以報(bào)錯(cuò)數(shù)組的形式返回錯(cuò)誤信息列表,所述報(bào)錯(cuò)數(shù)組為所述 JSON數(shù)組結(jié)構(gòu)。
7.一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信系統(tǒng),其特征在于,包括客運(yùn)信息發(fā)送請求接收模塊,用于接收客運(yùn)信息發(fā)送請求,所述客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù);JSON數(shù)據(jù)協(xié)議調(diào)用模塊,用于根據(jù)所述客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議; 數(shù)據(jù)封裝模塊,用于根據(jù)所述JSON數(shù)據(jù)協(xié)議對所述目標(biāo)數(shù)據(jù)進(jìn)行封裝,生成封裝數(shù)據(jù);封裝數(shù)據(jù)發(fā)送模塊,用于根據(jù)所述客運(yùn)信息發(fā)送請求向接收方發(fā)送所述封裝數(shù)據(jù)。
全文摘要
本發(fā)明提供一種基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng),其中,基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法,包括接收客運(yùn)信息發(fā)送請求,客運(yùn)信息發(fā)送請求包含需要發(fā)送的目標(biāo)數(shù)據(jù);根據(jù)客運(yùn)信息發(fā)送請求調(diào)用JSON數(shù)據(jù)協(xié)議;根據(jù)JSON數(shù)據(jù)協(xié)議對目標(biāo)數(shù)據(jù)進(jìn)行封裝,生成封裝數(shù)據(jù);根據(jù)客運(yùn)信息發(fā)送請求向接收方發(fā)送封裝數(shù)據(jù)。本發(fā)明的基于JSON數(shù)據(jù)協(xié)議的客運(yùn)信息通信方法及系統(tǒng)可以使票務(wù)系統(tǒng)的各個(gè)客戶端和票務(wù)系統(tǒng)間簡單且便捷地交換客運(yùn)信息,可以極大地提高票務(wù)系統(tǒng)的通用性和靈活性,從而使票務(wù)系統(tǒng)能更便捷且高效地為旅客服務(wù),相應(yīng)提高旅客購票的便捷性和滿意度。
文檔編號H04L29/08GK102158482SQ201110058439
公開日2011年8月17日 申請日期2011年3月10日 優(yōu)先權(quán)日2011年3月10日
發(fā)明者李吉生, 李良文, 王云, 王永峰, 趙建軍, 邵曉風(fēng), 黃鵬 申請人:易程(蘇州)軟件股份有限公司