两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

數(shù)據(jù)校驗的方法、裝置及系統(tǒng)與流程

文檔序號:12917401閱讀:564來源:國知局
數(shù)據(jù)校驗的方法、裝置及系統(tǒng)與流程

本公開總體涉及數(shù)據(jù)技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)校驗的方法、裝置及系統(tǒng)。



背景技術(shù):

目前,應(yīng)用中大量的服務(wù)端接口通過json格式來傳遞數(shù)據(jù),其中json(javascriptobjectnotation,javascript對象標識)是一種輕量級的數(shù)據(jù)交換格式,由于其具有數(shù)據(jù)體量小、網(wǎng)絡(luò)傳輸快、方便轉(zhuǎn)換等特點,是目前互聯(lián)網(wǎng)應(yīng)用數(shù)據(jù)傳輸?shù)闹饕獢?shù)據(jù)傳輸格式。

但是,通常由于上游遠程服務(wù)端接口的限制或者某些代碼中的缺陷,服務(wù)端傳遞的json數(shù)據(jù)可能存在格式不規(guī)范的問題,從而導(dǎo)致下游客戶端上的應(yīng)用程序(app)(如目前基于android/ios手機操作系統(tǒng)的應(yīng)用程序)在處理這些不規(guī)范的json數(shù)據(jù)時很容易出現(xiàn)應(yīng)用崩潰。例如:遠程服務(wù)端接口約定某個json字段的數(shù)據(jù)類型是string類型,但是實際服務(wù)端下發(fā)的數(shù)據(jù)是int類型,那么應(yīng)用中把int類型的數(shù)據(jù)當(dāng)作string類型的數(shù)據(jù)來處理就會出現(xiàn)異常,并導(dǎo)致應(yīng)用崩潰。

因此,需要一種新的數(shù)據(jù)校驗的方法、裝置及系統(tǒng)。

在所述背景技術(shù)部分公開的上述信息僅用于加強對本公開的背景的理解,因此它可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。



技術(shù)實現(xiàn)要素:

本公開提供一種數(shù)據(jù)校驗的理方法、裝置及系統(tǒng),以解決現(xiàn)有技術(shù)中因數(shù)據(jù)異常導(dǎo)致應(yīng)用崩潰的技術(shù)問題。

本公開的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習(xí)得。

根據(jù)本公開的一方面,提供一種數(shù)據(jù)校驗的方法,包括:

從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù);

對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果;

對所述校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將所述json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知所述客戶端應(yīng)用校驗結(jié)果為失敗。

根據(jù)本公開的一實施方式,對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗之前,還包括:

對所述json數(shù)據(jù)進行初步校驗,如果所述初步校驗成功則繼續(xù)對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗。

根據(jù)本公開的另一實施方式,所述初步校驗包括:

判斷所述json數(shù)據(jù)的對象是否為空;以及

判斷所述json數(shù)據(jù)中是否包含有非法字符;

當(dāng)所述json數(shù)據(jù)的對象不為空且所述json數(shù)據(jù)中不包含有非法字符時,所述初步校驗成功。

根據(jù)本公開的另一實施方式,所述方法還包括:

生成所述標準文件之后,將所述標準文件從所述標準服務(wù)器緩存到所述客戶端。

根據(jù)本公開的另一實施方式,所述方法還包括:

當(dāng)任一所述遠程服務(wù)端的json數(shù)據(jù)格式發(fā)生變化時,在所述標準服務(wù)器對相應(yīng)的標準文件進行更新。

根據(jù)本公開的另一方面,還提供一種數(shù)據(jù)校驗的裝置,包括:

接收模塊,用于從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù);

第一校驗?zāi)K,用于對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果;

標準文件生成模塊,用于所述標準服務(wù)器預(yù)先根據(jù)客戶端以及所述客戶端從所述至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成所述標準文件;以及

執(zhí)行模塊,用于對所述校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將所述json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知所述客戶端應(yīng)用校驗結(jié)果為失敗。

根據(jù)本公開的一實施方式,所述裝置還包括:

第二校驗?zāi)K,用于對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗之前,對所述json數(shù)據(jù)進行初步校驗,如果所述初步校驗成功則繼續(xù)執(zhí)行所述第一校驗?zāi)K,對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗。

根據(jù)本公開的另一實施方式,所述第二校驗?zāi)K包括:

第一判斷子模塊,用于判斷所述json數(shù)據(jù)的對象是否為空;以及

第二判斷子模塊,用于判斷所述json數(shù)據(jù)中是否包含有非法字符;

當(dāng)所述第一判斷子模塊判斷所述json數(shù)據(jù)的對象不為空,且所述第二判斷子模塊判斷所述json數(shù)據(jù)中不包含有非法字符時,所述初步校驗成功。

根據(jù)本公開的另一實施方式,所述裝置還包括:

緩存模塊,用于在所述標準服務(wù)器生成所述標準文件之后,將所述標準文件從所述標準服務(wù)器緩存到所述客戶端。

根據(jù)本公開的另一實施方式,所述裝置還包括:

更新模塊,用于當(dāng)任一所述遠程服務(wù)端的json數(shù)據(jù)格式發(fā)生變化時,在所述標準服務(wù)器對相應(yīng)的標準文件進行更新。

根據(jù)本公開的另一方面,還提供一種數(shù)據(jù)校驗的系統(tǒng),包括:

處理器;以及

存儲器,用于存儲所述處理器可執(zhí)行命令;

其中所述處理器用于:

從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù);

對每一所述json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果,其中所述標準文件為所述標準服務(wù)器預(yù)先根據(jù)客戶端以及所述客戶端從所述至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成;

對所述校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將所述json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知所述客戶端應(yīng)用校驗結(jié)果為失敗。

根據(jù)本公開的技術(shù)方案,能夠得到以下技術(shù)效果:

利用現(xiàn)有公開技術(shù)搭建了一套統(tǒng)一json數(shù)據(jù)校驗方法,根據(jù)從遠端服務(wù)器接收到的json數(shù)據(jù)與標準服務(wù)器中調(diào)用的標準文件比較來進行驗證,可以避免客戶端應(yīng)用由于json數(shù)據(jù)不規(guī)范造成的異常或崩潰。

應(yīng)當(dāng)理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性的,并不能限制本公開。

附圖說明

通過參照附圖詳細描述其示例實施例,本公開的上述和其它目標、特征及優(yōu)點將變得更加顯而易見。

圖1示意性示出本公開一實施例中提供的一種數(shù)據(jù)校驗的方法的步驟流程圖。

圖2示意性示出本公開遠端服務(wù)器、客戶端應(yīng)用以及標準服務(wù)器之間的框架關(guān)系示意圖。

圖3示意性示出本公開另一實施例中提供的一種數(shù)據(jù)校驗的方法的步驟流程圖。

圖4示意性示出本公開提供的校驗方法中步驟s40的步驟流程圖。

圖5示意性示出本公開一實施例中提供的一種數(shù)據(jù)校驗的裝置的示意圖。

圖6示意性示出本公開另一實施例中提供的一種數(shù)據(jù)校驗的裝置的示意圖。

圖7示意性示出根據(jù)本公開一實施例中提供的一種數(shù)據(jù)校驗的系統(tǒng)的示意圖。

具體實施方式

現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。

此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知結(jié)構(gòu)、方法、裝置、實現(xiàn)、材料或者操作以避免喧賓奪主而使得本公開的各方面變得模糊。

附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)??梢圆捎密浖问絹韺崿F(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。

圖1示出本公開一實施例中提供的一種數(shù)據(jù)校驗的方法的步驟流程圖,通過對客戶端應(yīng)用所接收的json數(shù)據(jù)進行校驗,避免在數(shù)據(jù)處理過程中因數(shù)據(jù)類型不同出現(xiàn)應(yīng)用崩潰的現(xiàn)象。

如圖1所示,在步驟s10中,從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù)。在本實施例中,至少一遠程服務(wù)端包括a、b、c,且遠程服務(wù)端a、遠程服務(wù)端b以及遠程服務(wù)端c這三個不同的遠程服務(wù)端分別向客戶端應(yīng)用發(fā)送格式不同的json數(shù)據(jù)。

如圖1所示,在步驟s20中,對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果。本實施例中的標準文件jsonschema是用來描述json數(shù)據(jù)格式的標準,具體的規(guī)范可以參見http://json-schema.org/latest/json-schema-core.html。標準文件jsonschema是標準服務(wù)器預(yù)先根據(jù)客戶端以及客戶端從至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成,而且標準文件的生成可以利用第三方開源庫https://github.com/fasterxml/jackson-module-jsonschema。

如圖1所示,在步驟s30中,對校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知客戶端應(yīng)用校驗結(jié)果為失敗。

本實施例提供的方法中所涉及的遠端服務(wù)器a(用001表示)、遠端服務(wù)器b(用002表示)、遠端服務(wù)器c(用0031表示)、客戶端應(yīng)用004、以及標準服務(wù)器005的框架關(guān)系示意圖如圖2所示,三個遠端服務(wù)器分別向客戶端應(yīng)用提供不同數(shù)據(jù)類型的json數(shù)據(jù),客戶端應(yīng)用004接收后,其中的json校驗?zāi)K0041根據(jù)從遠端服務(wù)器接收到的json數(shù)據(jù)與標準服務(wù)器005中相應(yīng)的遠端服務(wù)器所提供的數(shù)據(jù)

如圖3所示的步驟流程圖所示,在本公開的一實施方式,在步驟s20對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗之前,還包括:

步驟s40:對json數(shù)據(jù)進行初步校驗,如果初步校驗成功則繼續(xù)步驟s20,即對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗。

如圖4所示,其中步驟s40中的初步校驗包括以下步驟:

步驟s41:判斷json數(shù)據(jù)的對象是否為空,這樣可以避免空指針異常。

步驟s42:判斷json數(shù)據(jù)中是否包含有非法字符,json數(shù)據(jù)的對象不為空且json數(shù)據(jù)中不包含有非法字符時,初步校驗成功,可以進行下一步的驗證,也就是步驟s40的初步校驗成功后繼續(xù)步驟s20基于標準文件的驗證。除了判斷是否為空之外,還需要判斷json數(shù)據(jù)中含有非utf8的字符,由于根據(jù)標準文件jsonschema校驗過程中只能支持utf8的字符,因此非utf8的字符就是非法字符。這樣在初步校驗酒可以過濾掉不合法的json數(shù)據(jù),避免在后續(xù)更復(fù)雜的校驗中出現(xiàn)異常崩潰的風(fēng)險。

初步校驗成功后,進行下一步的基于標準文件的校驗,也就是根據(jù)調(diào)用的遠程服務(wù)端(a/b/c)的不同,從jsonschema標準服務(wù)器下載對應(yīng)的jsonschema標準文件。客戶端應(yīng)用對遠程服務(wù)端返回的json數(shù)據(jù)(通常是以數(shù)據(jù)包的形式)和對應(yīng)的jsonschema文件進行校驗,校驗流程就是把json數(shù)據(jù)和jsonschema標準文件進行比較,例如某個字段在schema中約定為數(shù)據(jù)類型為string,但是如果真實json數(shù)據(jù)中數(shù)據(jù)類型是int,那么數(shù)據(jù)類型不相符就會導(dǎo)致校驗失敗。校驗的工具包可以選擇json-schema-validator(android)/kitejsonvalidator(ios),針對android和ios不同的系統(tǒng)提供不同的校驗工具包。如果這一步驟的校驗失敗,則通知客戶端應(yīng)用json數(shù)據(jù)校驗失敗,如果校驗成功則把json數(shù)據(jù)傳給應(yīng)用進行業(yè)務(wù)處理。

還如圖3所示,本公開提供的方法中還包括:

步驟s50:生成標準文件之后,將標準文件從標準服務(wù)器緩存到客戶端,通過采用本地緩存機制,可以提高性能。

步驟s60:當(dāng)任一遠程服務(wù)端的json數(shù)據(jù)格式發(fā)生變化時,在標準服務(wù)器對相應(yīng)的標準文件進行更新。通過這一步驟,如果調(diào)用遠程服務(wù)的json數(shù)據(jù)格式發(fā)生變化,需要同步更新jsonschema標準服務(wù)器上標準文件的內(nèi)容,以保證校驗的一致性。

綜上所述,本實施例提供的校驗方法,利用現(xiàn)有公開技術(shù)搭建了一套統(tǒng)一json數(shù)據(jù)校驗方法,根據(jù)從遠端服務(wù)器接收到的json數(shù)據(jù)與標準服務(wù)器中調(diào)用的標準文件比較來進行驗證,可以避免客戶端應(yīng)用由于json數(shù)據(jù)不規(guī)范造成的異?;虮罎ⅰ?/p>

基于上述提供的方法,圖5還示出本公開另一實施例中提供的一種數(shù)據(jù)校驗的裝置的示意圖,該裝置100包括:接收模塊110、第一校驗?zāi)K120、標準文件生成模塊130以及執(zhí)行模塊140。

接收模塊110用于從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù)。在本實施例中,至少一遠程服務(wù)端包括a、b、c,且遠程服務(wù)端a、遠程服務(wù)端b以及遠程服務(wù)端c這三個不同的遠程服務(wù)端分別向客戶端應(yīng)用發(fā)送格式不同的json數(shù)據(jù)。

第一校驗?zāi)K120用于對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果,校驗結(jié)果為校驗成功或校驗失敗。本實施例中的標準文件jsonschema是用來描述json數(shù)據(jù)格式的標準,具體的規(guī)范可以參見http://json-schema.org/latest/json-schema-core.html。

標準文件生成模塊130用于標準服務(wù)器預(yù)先根據(jù)客戶端以及客戶端從至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成標準文件。標準文件jsonschema是標準服務(wù)器預(yù)先根據(jù)客戶端以及客戶端從至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成,而且標準文件的生成可以利用第三方開源庫https://github.com/fasterxml/jackson-module-jsonschema。

執(zhí)行模塊140用于對校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知客戶端應(yīng)用校驗結(jié)果為失敗。

如圖6所示的示意圖,在本公開的另一實施例中,該裝置100中還包括:第二校驗?zāi)K150,用于在第一校驗?zāi)K120對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗之前,對json數(shù)據(jù)進行初步校驗,如果初步校驗成功則繼續(xù)執(zhí)行第一校驗?zāi)K,對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗。

具體的,第二校驗?zāi)K150包括:第一判斷子模塊151和第二判斷子模塊152,第一判斷子模塊151用于判斷json數(shù)據(jù)的對象是否為空;第二判斷子模塊152用于判斷json數(shù)據(jù)中是否包含有非法字符(例如,非utf8的字符)。當(dāng)?shù)谝慌袛嘧幽K判斷json數(shù)據(jù)的對象不為空,且第二判斷子模塊判斷json數(shù)據(jù)中不包含有非法字符時,初步校驗成功。通過第一判斷子模塊151的判斷可以避免空指針異常,通過第二判斷子模塊152判斷json數(shù)據(jù)中含有非utf8的字符,由于根據(jù)標準文件jsonschema校驗過程中只能支持utf8的字符,因此非utf8的字符就是非法字符。這樣在初步校驗酒可以過濾掉不合法的json數(shù)據(jù),避免在后續(xù)更復(fù)雜的校驗中出現(xiàn)異常崩潰的風(fēng)險。

如圖6所示的示意圖,在本公開的另一實施例中,該裝置100中還包括:緩存模塊160和更新模塊170,緩存模塊160用于在標準服務(wù)器生成標準文件之后,將標準文件從標準服務(wù)器緩存到客戶端。通過采用本地緩存機制,可以提高性能。

更新模塊170用于當(dāng)任一遠程服務(wù)端的json數(shù)據(jù)格式發(fā)生變化時,在標準服務(wù)器對相應(yīng)的標準文件進行更新。如果調(diào)用遠程服務(wù)的json數(shù)據(jù)格式發(fā)生變化,需要同步更新jsonschema標準服務(wù)器上標準文件的內(nèi)容,以保證校驗的一致性。

通過本公開提供的數(shù)據(jù)校驗裝置,利用現(xiàn)有公開技術(shù)搭建了一套統(tǒng)一json數(shù)據(jù)校驗方法,根據(jù)從遠端服務(wù)器接收到的json數(shù)據(jù)與標準服務(wù)器中調(diào)用的標準文件比較來進行驗證,可以避免客戶端應(yīng)用由于json數(shù)據(jù)不規(guī)范造成的異常或崩潰。

基于上述的方法和裝置,圖7還示出了本公開的實施例提供的一種數(shù)據(jù)校驗的系統(tǒng),該系統(tǒng)200中包括處理器210和存儲器220。存儲器220用于存儲處理器210可執(zhí)行命令,處理器210用于從至少一遠程服務(wù)端接收json數(shù)據(jù),得到至少一json數(shù)據(jù);對每一json數(shù)據(jù)從標準服務(wù)器調(diào)用相應(yīng)的標準文件進行校驗,得到校驗結(jié)果,其中標準文件為標準服務(wù)器預(yù)先根據(jù)客戶端以及客戶端從至少一遠程服務(wù)端其中之一接收的json數(shù)據(jù)雙方的接口約定文檔生成;對校驗結(jié)果進行判斷,如果校驗結(jié)果為成功,則將json數(shù)據(jù)傳遞給客戶端應(yīng)用;如果校驗結(jié)果為失敗,則通知客戶端應(yīng)用校驗結(jié)果為失敗。

應(yīng)清楚地理解,本公開描述了如何形成和使用特定示例,但本公開的原理不限于這些示例的任何細節(jié)。相反,基于本公開公開的內(nèi)容的教導(dǎo),這些原理能夠應(yīng)用于許多其它實施方式。

以上具體地示出和描述了本公開的示例性實施方式。應(yīng)可理解的是,本公開不限于這里描述的詳細結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本公開意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
靖远县| 轮台县| 溧阳市| 崇义县| 临洮县| 伽师县| 洛隆县| 柘城县| 托克逊县| 那坡县| 奎屯市| 建阳市| 黄石市| 伽师县| 万盛区| 佳木斯市| 土默特右旗| 通海县| 青河县| 涟源市| 重庆市| 察哈| 瓦房店市| 澎湖县| 鄂托克前旗| 玉田县| 西安市| 万盛区| 大同县| 永宁县| 怀柔区| 内江市| 湖南省| 溧阳市| 大冶市| 雷山县| 清远市| 司法| 新干县| 壤塘县| 垦利县|