欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于json數(shù)據(jù)的驗證方法及裝置的制造方法

文檔序號:10512038閱讀:267來源:國知局
基于json數(shù)據(jù)的驗證方法及裝置的制造方法
【專利摘要】本發(fā)明是關(guān)于一種基于JSON數(shù)據(jù)的驗證方法及裝置,其方法包括:獲取待驗證JSON數(shù)據(jù);將所述待驗證JSON數(shù)據(jù)解析,得到解析對象;提取所述解析對象中的目標(biāo)鍵值;判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值;當(dāng)所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。這樣通過分別對待驗證JSON數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容的驗證,可以更準(zhǔn)確的判斷出待驗證JSON數(shù)據(jù)是否為所需的數(shù)據(jù)。
【專利說明】
基于JSON數(shù)據(jù)的驗證方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種基于JSON數(shù)據(jù)的驗證方法及裝置。
【背景技術(shù)】
[0002]隨著技術(shù)的不斷發(fā)展,越來越多的App(應(yīng)用軟件)不光是需要和網(wǎng)絡(luò)服務(wù)器進(jìn)行數(shù)據(jù)傳輸和交互,也需要和其他App進(jìn)行數(shù)據(jù)傳遞。承擔(dān)App與網(wǎng)絡(luò)來進(jìn)行傳輸和存儲數(shù)據(jù)的一般是XML或者JS0N。在移動互聯(lián)網(wǎng)時代,XML和JSON很重要。由于JSON數(shù)據(jù)體積小、易于傳輸且各種語言都能很好的兼容及解析,采用JSON數(shù)據(jù)進(jìn)行傳輸成為數(shù)據(jù)交互中主要的數(shù)據(jù)傳輸方式。
[0003]在App與服務(wù)器通信時,為了確定服務(wù)器返回的數(shù)據(jù)是否為終端所需的正確數(shù)據(jù),通常需要對這些數(shù)據(jù)進(jìn)行驗證,而從服務(wù)器接口返回報文通常是JSON格式的數(shù)據(jù),這里成為JSON數(shù)據(jù)。傳統(tǒng)對JSON數(shù)據(jù)驗證的方式,是先確定待驗證JSON數(shù)據(jù)的數(shù)據(jù)格式,然后對其解析,最后對在對其內(nèi)容進(jìn)行判斷,得出待驗證JSON數(shù)據(jù)是否驗證通過。例如,在對JSON進(jìn)行數(shù)據(jù)驗證過程中,傳統(tǒng)的JSON數(shù)據(jù)驗證方式一般是通過將被比對的JSON數(shù)據(jù)與目標(biāo)JSON數(shù)據(jù)按照層的方式進(jìn)行比對。但是,在JSON數(shù)據(jù)較大時,由于需要對每個節(jié)點都進(jìn)行比對,驗證過程會非常慢。會導(dǎo)致耗費大量的計算資源,以及會造成比對結(jié)果不準(zhǔn)確的缺點。

【發(fā)明內(nèi)容】

[0004]為克服相關(guān)技術(shù)中存在的問題,本發(fā)明提供一種基于JSON數(shù)據(jù)的驗證方法及裝置。
[0005]根據(jù)本發(fā)明實施例的第一方面,提供一種基于JSON數(shù)據(jù)的驗證方法,包括:
[0006]獲取待驗證JSON數(shù)據(jù);
[0007]將所述待驗證JSON數(shù)據(jù)解析,得到解析對象;
[0008]提取所述解析對象中的目標(biāo)鍵值;
[0009]判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值;
[0010]當(dāng)所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。
[0011]根據(jù)本發(fā)明實施例的第二方面,提供一種基于JSON數(shù)據(jù)的驗證裝置,包括:
[0012]JSON數(shù)據(jù)獲取單元,用于獲取待驗證JSON數(shù)據(jù);
[0013]數(shù)據(jù)解析單元,用于將所述待驗證JSON數(shù)據(jù)解析,得到解析對象;
[0014]鍵值提取單元,用于提取所述解析對象中的目標(biāo)鍵值;
[0015]鍵值判斷單元,用于判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值;
[0016]驗證確定單元,用于在所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。
[0017]本發(fā)明的實施例提供的技術(shù)方案可以包括以下有益效果:
[0018]本發(fā)明提供的基于JSON數(shù)據(jù)的驗證方法及裝置,在對待驗證JSON數(shù)據(jù)時,需要對該待驗證JSON數(shù)據(jù)解析,得到解析對象,然后提取該解析對象中所需驗證的目標(biāo)鍵值,并判斷該目標(biāo)鍵值是否等于預(yù)設(shè)鍵值,如果目標(biāo)鍵值等于預(yù)設(shè)鍵值,說明該待驗證JSON數(shù)據(jù)驗證通過。這樣通過分別對待驗證JSON數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容的驗證,可以快速對待驗證JSON數(shù)據(jù)進(jìn)行驗證,并可以節(jié)省大量的計算資源,以及可以更準(zhǔn)確的判斷出待驗證JSON數(shù)據(jù)是否為所需的數(shù)據(jù)。
[0019]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
【附圖說明】
[0020]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
[0021 ]圖1是根據(jù)一示例性實施例示出的一種基于JSON數(shù)據(jù)的驗證方法的流程圖;
[0022]圖2是圖1中步驟S120的流程圖;
[0023]圖3是圖2中步驟S121的流程圖;
[0024]圖4是根據(jù)一示例性實施例示出的一種基于JSON數(shù)據(jù)的驗證方法的流程圖;
[0025]圖5是圖1中步驟S140的流程圖;
[0026]圖6是根據(jù)一示例性實施例示出的一種基于JSON數(shù)據(jù)的驗證裝置的結(jié)構(gòu)示意圖;
[0027]圖7是圖6中數(shù)據(jù)解析單元的示意圖;
[0028]圖8是圖7中數(shù)據(jù)類型轉(zhuǎn)換模塊的示意圖;
[0029]圖9是根據(jù)又一示例性實施例示出的一種基于JSON數(shù)據(jù)的驗證裝置的結(jié)構(gòu)示意圖;
[0030]圖10是圖6中鍵值判斷單元的示意圖。
【具體實施方式】
[0031]這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0032]JSON數(shù)據(jù)格式由于簡單易懂、同時與可擴(kuò)展標(biāo)識語言(ExtensibleMarkupLanguage,簡稱XML)數(shù)據(jù)相比提供了更好的空間利用。所以在Web技術(shù)逐步流行的今天,JSON已經(jīng)成為數(shù)據(jù)交換的一種重要的數(shù)據(jù)格式。示例性的,在使用互聯(lián)網(wǎng)Web技術(shù)開發(fā)高交互的Web界面的時候,前后臺數(shù)據(jù)交換使用JSON數(shù)據(jù)格式,例如:{ “a”: { “b”: c,“d”: e}}。JSON是JavaScript的一個內(nèi)置的語言特征,提供了一種簡單的描述復(fù)雜對象的方法。對于上述示例,a的值就是一個對象類型,且這個對象有兩個屬性分別是b和d其值分別是c和e。
[0033]但是JSON與語法嚴(yán)格、發(fā)展成熟的數(shù)據(jù)格式XML相比,JSON數(shù)據(jù)校驗規(guī)則缺乏,沒有現(xiàn)成的基礎(chǔ)設(shè)施可以使用,這也制約了 JSON數(shù)據(jù)格式的大規(guī)模應(yīng)用,特別對于數(shù)據(jù)可靠性要求比較高的企業(yè)應(yīng)用而言,JSON數(shù)據(jù)格式校驗尤為重要。
[0034]因此,本發(fā)明提供了一種基于JSON數(shù)據(jù)的驗證方法及裝置,無需考慮待驗證JSON數(shù)據(jù)的數(shù)據(jù)格式,無論輸入任何格式的JSON格式數(shù)據(jù),都可以解析為特定的map數(shù)據(jù)結(jié)構(gòu),通過將該特定的map數(shù)據(jù)結(jié)構(gòu)與預(yù)設(shè)模板map數(shù)據(jù)結(jié)構(gòu)中對應(yīng)鍵值的比較,可以快速驗證待驗證JSON數(shù)據(jù)的正確性。
[0035]為了詳細(xì)闡述本發(fā)明如何驗證JSON數(shù)據(jù),本發(fā)明實施例首先提供了一種基于JSON數(shù)據(jù)的驗證方法,應(yīng)用于終端中,如圖1所示,該方法可以包括如下步驟:
[0036]在步驟SllO中,獲取待驗證JSON數(shù)據(jù)。
[0037]在終端接收到服務(wù)器返回的通信數(shù)據(jù)時,該通信數(shù)據(jù)通常為JSON數(shù)據(jù),那么通常需要該JSON數(shù)據(jù)進(jìn)行驗證,以判斷從服務(wù)器接口中返回的通信數(shù)據(jù)是否為所需的數(shù)據(jù)。這里把需要驗證的JSON數(shù)據(jù)成為待驗證JSON數(shù)據(jù)。在獲取到待驗證JSON數(shù)據(jù)之后,就可以進(jìn)行下面的對該JSON數(shù)據(jù)的驗證過程。
[0038]在步驟S120中,將待驗證JSON數(shù)據(jù)解析,得到解析對象。
[0039]在對待驗證JSON數(shù)據(jù)驗證過程中,可以直接使用JSON內(nèi)置的數(shù)據(jù)格式進(jìn)行校驗,JSON的內(nèi)置數(shù)據(jù)格式包括:對象、數(shù)組、字符串、布爾型等幾種類型。
[0040]例如,{“a”: { “b”: c,“d”: e}},在解析JSON數(shù)據(jù)的時候,可以自行判斷這些數(shù)據(jù)是否滿足數(shù)據(jù)類型的要求。但這種需要人工編程的方式對數(shù)據(jù)格式進(jìn)行判斷,對于通常數(shù)據(jù)類型僅包含幾種簡單類型的校驗,但對于枚舉,ID等常見類型缺乏有效支持。
[0041]本發(fā)明提供的實施例中首先會驗證待驗證JSON數(shù)據(jù)的數(shù)據(jù)格式是否正確,如果不正確,那么驗證不通過;如果格式正確,在進(jìn)一步驗證待驗證JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容是否正確。只有在待驗證JSON數(shù)據(jù)的格式和內(nèi)容都正確時,才能確定該待驗證JSON數(shù)據(jù)驗證通過,大大提高了驗證的準(zhǔn)確性。
[0042]需要說明的是,在對待驗證JSON數(shù)據(jù)格式驗證的過程,也就是對待驗證JSON數(shù)據(jù)進(jìn)行解析的過程,如果可以將待驗證JSON數(shù)據(jù)成功解析,說明該待驗證JSON數(shù)據(jù)的格式正確。
[0043]在步驟S130中,提取解析對象中的目標(biāo)鍵值。
[0044]在待驗證JSON數(shù)據(jù)中,包含鍵名和鍵值,而每一個鍵名對應(yīng)一個鍵值。在將待驗證JSON數(shù)據(jù)解析為解析對象的過程,是將待驗證JSON數(shù)據(jù)中的鍵名轉(zhuǎn)換為預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù),該預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)具有唯一性。并將該預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)存放到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中,將預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值存放到map數(shù)據(jù)結(jié)構(gòu)的節(jié)點中。需要說明的是,預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值為在預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)在轉(zhuǎn)換前鍵名對應(yīng)的鍵值。
[0045]由于map數(shù)據(jù)結(jié)構(gòu)中預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值可能會有很多個,如果只需驗證map數(shù)據(jù)結(jié)構(gòu)中部分預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值是否為預(yù)設(shè)鍵值,那么將需要驗證預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值作為目標(biāo)鍵值。
[0046]在步驟S140中,判斷目標(biāo)鍵值是否等于預(yù)設(shè)鍵值。
[0047]當(dāng)目標(biāo)鍵值等于預(yù)設(shè)鍵值時,在步驟S150中,確定待驗證JSON數(shù)據(jù)通過驗證。
[0048]當(dāng)目標(biāo)鍵值不等于預(yù)設(shè)鍵值時,在步驟S160中,確定待驗證JSON數(shù)據(jù)未通過驗證。
[0049]在判斷目標(biāo)鍵值是否等于預(yù)設(shè)鍵值時,需要將目標(biāo)鍵值與預(yù)設(shè)鍵值進(jìn)行比對。實施例中會預(yù)先建立一個與上述map數(shù)據(jù)結(jié)構(gòu)相同的數(shù)據(jù)結(jié)構(gòu),這里可以成為模板map數(shù)據(jù)結(jié)構(gòu)。該模板map數(shù)據(jù)結(jié)構(gòu)中存放這需要驗證的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)及其對應(yīng)的預(yù)設(shè)鍵值。
[0050]在判斷目標(biāo)鍵值是否等于預(yù)設(shè)鍵值時,首先匹配map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)與模板map數(shù)據(jù)結(jié)構(gòu)中相同的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù),然后對比二者分別對應(yīng)的鍵值是否相等。相當(dāng)于map數(shù)據(jù)結(jié)構(gòu)與模板map數(shù)據(jù)結(jié)構(gòu)中,相同預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)下對應(yīng)的鍵值是否相等。如果相同預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)下對應(yīng)的鍵值是否相等,那么說明待驗證JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容也驗證通過。在待驗證JSON數(shù)據(jù)的格式和數(shù)據(jù)內(nèi)容分別驗證通過之后,那么說明該待驗證J SON驗證通過。
[0051]本發(fā)明提供的基于JSON數(shù)據(jù)的驗證方法,在對待驗證JSON數(shù)據(jù)時,需要對該待驗證JSON數(shù)據(jù)解析,得到解析對象,然后提取該解析對象中所需驗證的目標(biāo)鍵值,并判斷該目標(biāo)鍵值是否等于預(yù)設(shè)鍵值,如果目標(biāo)鍵值等于預(yù)設(shè)鍵值,說明該待驗證JSON數(shù)據(jù)驗證通過。這樣通過分別對待驗證JSON數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容的驗證,可以更準(zhǔn)確的判斷出待驗證JSON數(shù)據(jù)是否為所需的數(shù)據(jù)。
[0052]為了詳細(xì)闡述如何對待驗證JSON數(shù)據(jù)解析,作為圖1方法的細(xì)化,在本發(fā)明的另一實施例中,如圖2所示,步驟SI20還可以包括如下步驟:
[0053]在步驟S121中,將待驗證JSON數(shù)據(jù)轉(zhuǎn)換為map數(shù)據(jù)結(jié)構(gòu)類型。
[0054]在將待驗證JSON數(shù)據(jù)解析為解析對象的過程,是將待驗證JSON數(shù)據(jù)中的鍵名轉(zhuǎn)換為預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù),該預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)具有唯一性。
[0055]需要說明的是,該預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)是xpath路徑結(jié)構(gòu)數(shù)據(jù),該xpath路徑結(jié)構(gòu)數(shù)據(jù)是實施例中自定義的一種結(jié)構(gòu)數(shù)據(jù),通過遞歸遍歷待驗證JSON數(shù)據(jù)中的鍵值對,將鍵值對中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù),并將該xpath路徑結(jié)構(gòu)數(shù)據(jù)及對應(yīng)的鍵值存放到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中,該xpath路徑結(jié)構(gòu)數(shù)據(jù)具有唯一*性。
[0056]作為圖2方法的細(xì)化,在本發(fā)明的另一實施例中,如圖3所示,步驟121還可以包括如下步驟:
[0057]在步驟S1211中,將待驗證JSON數(shù)據(jù)解析為待驗證JSON對象。
[0058]由于待驗證JSON數(shù)據(jù)可以是多個類型,為了便于對待驗證JSON數(shù)據(jù)進(jìn)行驗證,需要將待驗證JSON數(shù)據(jù)解析為JSON對象。
[0059]在步驟S1212中,將待驗證JSON對象中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù),并將xpath路徑結(jié)構(gòu)數(shù)據(jù)保存到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中。
[0060]在步驟S1213中,將待驗證JSON對象中的鍵值保存到map數(shù)據(jù)結(jié)構(gòu)中。
[0061]該xpath路徑結(jié)構(gòu)數(shù)據(jù)是實施例中自定義的一種結(jié)構(gòu)數(shù)據(jù),通過遞歸遍歷待驗證JSON數(shù)據(jù)中的鍵值對,將鍵值對中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù),并將該xpath路徑結(jié)構(gòu)數(shù)據(jù)及對應(yīng)的鍵值存放到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中,該xpath路徑結(jié)構(gòu)數(shù)據(jù)具有唯一性。
[0062]作為圖3方法的細(xì)化,在本發(fā)明的另一實施例中,如圖4所示,還可以包括如下步驟:
[0063]在步驟S1214中,將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)按照預(yù)設(shè)方式排序,得到排序map結(jié)構(gòu)類型數(shù)據(jù)。
[0064]在將xpath路徑結(jié)構(gòu)數(shù)據(jù)及其對應(yīng)的鍵值保存到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中后,還可以對該map數(shù)據(jù)結(jié)構(gòu)中的路徑結(jié)構(gòu)數(shù)據(jù)進(jìn)行排序,例如,可以將同一類xpath路徑結(jié)構(gòu)數(shù)據(jù)在map數(shù)據(jù)結(jié)構(gòu)中放在一起,或者將優(yōu)先級較高的xpath路徑結(jié)構(gòu)數(shù)據(jù)放在前面。抑或?qū)path路徑結(jié)構(gòu)數(shù)據(jù)對應(yīng)的鍵值按照大小順序排列等等,便于后續(xù)中對目標(biāo)鍵值的判斷比車父,提尚驗證效率。
[0065]作為圖1方法的細(xì)化,在本發(fā)明的另一實施例中,如圖5所示,步驟S140還可以包括如下步驟:
[ΟΟ??]在步驟S141中,獲取預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu)。
[0067]實施例中會預(yù)先生成一個與上述map數(shù)據(jù)結(jié)構(gòu)相同的數(shù)據(jù)結(jié)構(gòu),這里可以成為模板map數(shù)據(jù)結(jié)構(gòu)。該模板map數(shù)據(jù)結(jié)構(gòu)中存放這需要驗證的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)及其對應(yīng)的預(yù)設(shè)鍵值。
[0068]在步驟S142中,判斷模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值是否與map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值相等。
[0069]當(dāng)模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值與map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值相等時,在步驟S143中,確定目標(biāo)鍵值等于預(yù)設(shè)鍵值。
[ΟΟΤ?]當(dāng)模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值與map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值不相等時,在步驟S144中,確定目標(biāo)鍵值不等于預(yù)設(shè)鍵值。
[0071 ]在判斷目標(biāo)鍵值是否等于預(yù)設(shè)鍵值時,首先匹配map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)與模板map數(shù)據(jù)結(jié)構(gòu)中相同的預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù),然后對比二者分別對應(yīng)的鍵值是否相等。相當(dāng)于map數(shù)據(jù)結(jié)構(gòu)與模板map數(shù)據(jù)結(jié)構(gòu)中,相同預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)下對應(yīng)的鍵值是否相等。如果相同預(yù)設(shè)路徑結(jié)構(gòu)數(shù)據(jù)下對應(yīng)的鍵值是否相等,那么說明待驗證JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容也驗證通過。在待驗證JSON數(shù)據(jù)的格式和數(shù)據(jù)內(nèi)容分別驗證通過之后,那么說明該待驗證J SON驗證通過。
[0072]本發(fā)明提供的基于JSON數(shù)據(jù)的驗證方法,在對待驗證JSON數(shù)據(jù)時,需要對該待驗證JSON數(shù)據(jù)解析,得到解析對象,然后提取該解析對象中所需驗證的目標(biāo)鍵值,并判斷該目標(biāo)鍵值是否等于預(yù)設(shè)鍵值,如果目標(biāo)鍵值等于預(yù)設(shè)鍵值,說明該待驗證JSON數(shù)據(jù)驗證通過。這樣通過分別對待驗證JSON數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容的驗證,可以更準(zhǔn)確的判斷出待驗證JSON數(shù)據(jù)是否為所需的數(shù)據(jù)。
[0073]另外,在對待驗證JSON數(shù)據(jù)解析的過程中,將待驗證JSON數(shù)據(jù)中的鍵名轉(zhuǎn)換為自定義的xpath路徑結(jié)構(gòu)數(shù)據(jù),并將該xpath路徑結(jié)構(gòu)數(shù)據(jù)及其對應(yīng)的鍵值存放到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中。通過判斷預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu)與map數(shù)據(jù)結(jié)構(gòu)中,相同xpath路徑結(jié)構(gòu)數(shù)據(jù)下的鍵值是否相等,判斷出待驗證JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容是否所需的數(shù)據(jù)內(nèi)容。并且還可以對map數(shù)據(jù)結(jié)構(gòu)中xpath路徑結(jié)構(gòu)數(shù)據(jù)的排序,得到排序map數(shù)據(jù)結(jié)構(gòu),便于對JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容進(jìn)行驗證,提高驗證效率。
[0074]通過以上的方法實施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:只讀存儲器(R0M)、隨機(jī)存取存儲器(RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0075]另外,作為對上述各實施例的實現(xiàn),本發(fā)明實施例還提供了一種基于JSON數(shù)據(jù)的驗證裝置,該裝置位于終端中,如圖6所示,該裝置包括:JSON數(shù)據(jù)獲取單元10、數(shù)據(jù)解析單元20、鍵值提取單元30、鍵值判斷單元40和驗證確定單元50,其中,
[0076]JSON數(shù)據(jù)獲取單元10,用于獲取待驗證JSON數(shù)據(jù);
[0077]數(shù)據(jù)解析單元20,用于將所述待驗證JSON數(shù)據(jù)解析,得到解析對象;
[0078]鍵值提取單元30,用于提取所述解析對象中的目標(biāo)鍵值;
[0079]鍵值判斷單元40,用于判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值;
[0080]驗證確定單元50,用于在所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。
[0081]在本發(fā)明又一實施例中,基于圖6,如圖7所示,所述數(shù)據(jù)解析單元20,包括:數(shù)據(jù)類型轉(zhuǎn)換模塊21,其中,
[0082]數(shù)據(jù)類型轉(zhuǎn)換模塊21,用于將所述待驗證JSON數(shù)據(jù)轉(zhuǎn)換為map數(shù)據(jù)結(jié)構(gòu)類型。
[0083]在本發(fā)明又一實施例中,基于圖7,如圖8所示,所述數(shù)據(jù)類型轉(zhuǎn)換模塊21,包括:數(shù)據(jù)解析子模塊211、數(shù)據(jù)轉(zhuǎn)換子模塊212、數(shù)據(jù)保存子模塊213和鍵值保存子模塊214,其中,
[0084]數(shù)據(jù)解析子模塊211,用于將所述待驗證JSON數(shù)據(jù)解析為待驗證JSON對象;
[0085]數(shù)據(jù)轉(zhuǎn)換子模塊212,用于將所述待驗證JSON對象中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù);
[0086]數(shù)據(jù)保存子模塊213,用于將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)保存到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中;
[0087]鍵值保存子模塊214,用于將所述待驗證JSON對象中的鍵值保存到所述map數(shù)據(jù)結(jié)構(gòu)中。
[0088]在本發(fā)明又一實施例中,基于圖7,如圖9所示,還包括:排序子模塊215,其中,
[0089]排序子模塊215,用于將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)按照預(yù)設(shè)方式排序,得到排序map結(jié)構(gòu)類型數(shù)據(jù)。
[0090]在本發(fā)明又一實施例中,基于圖6,如圖10所示,所述鍵值判斷單元40,包括:數(shù)據(jù)獲取模塊41和鍵值判斷模塊42,其中,
[0091 ]數(shù)據(jù)獲取模塊41,用于獲取預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu);
[0092]鍵值判斷模塊42,用于判斷所述模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值是否與所述map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值相等。
[0093]關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0094]本發(fā)明提供的基于JSON數(shù)據(jù)的驗證方法及裝置,在對待驗證JSON數(shù)據(jù)時,需要對該待驗證JSON數(shù)據(jù)解析,得到解析對象,然后提取該解析對象中所需驗證的目標(biāo)鍵值,并判斷該目標(biāo)鍵值是否等于預(yù)設(shè)鍵值,如果目標(biāo)鍵值等于預(yù)設(shè)鍵值,說明該待驗證JSON數(shù)據(jù)驗證通過。這樣通過分別對待驗證JSON數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容的驗證,可以更準(zhǔn)確的判斷出待驗證JSON數(shù)據(jù)是否為所需的數(shù)據(jù)。
[0095]另外,在對待驗證JSON數(shù)據(jù)解析的過程中,將待驗證JSON數(shù)據(jù)中的鍵名轉(zhuǎn)換為自定義的xpath路徑結(jié)構(gòu)數(shù)據(jù),并將該xpath路徑結(jié)構(gòu)數(shù)據(jù)及其對應(yīng)的鍵值存放到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中。通過判斷預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu)與map數(shù)據(jù)結(jié)構(gòu)中,相同xpath路徑結(jié)構(gòu)數(shù)據(jù)下的鍵值是否相等,判斷出待驗證JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容是否所需的數(shù)據(jù)內(nèi)容。并且還可以對map數(shù)據(jù)結(jié)構(gòu)中xpath路徑結(jié)構(gòu)數(shù)據(jù)的排序,得到排序map數(shù)據(jù)結(jié)構(gòu),便于對JSON數(shù)據(jù)的數(shù)據(jù)內(nèi)容進(jìn)行驗證,提高驗證效率。
[0096]可以理解的是,本發(fā)明可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如:個人計算機(jī)、服務(wù)器計算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
[0097]本發(fā)明可以在由計算機(jī)執(zhí)行的計算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
[0098]需要說明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0099]本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本發(fā)明未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
[0100]應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。
【主權(quán)項】
1.一種基于JSON數(shù)據(jù)的驗證方法,其特征在于,包括: 獲取待驗證JSON數(shù)據(jù); 將所述待驗證JSON數(shù)據(jù)解析,得到解析對象; 提取所述解析對象中的目標(biāo)鍵值; 判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值; 當(dāng)所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。2.根據(jù)權(quán)利要求1所述的基于JSON數(shù)據(jù)的驗證方法,其特征在于,所述將所述待驗證JSON數(shù)據(jù)解析,包括: 將所述待驗證JSON數(shù)據(jù)轉(zhuǎn)換為map數(shù)據(jù)結(jié)構(gòu)類型。3.根據(jù)權(quán)利要求2所述的基于JSON數(shù)據(jù)的驗證方法,其特征在于,所述將所述待驗證JSON數(shù)據(jù)轉(zhuǎn)換為排序map數(shù)據(jù)結(jié)構(gòu)類型,包括: 將所述待驗證JSON數(shù)據(jù)解析為待驗證JSON對象; 將所述待驗證JSON對象中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù),并將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)保存到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中; 將所述待驗證JSON對象中的鍵值保存到所述map數(shù)據(jù)結(jié)構(gòu)中。4.根據(jù)權(quán)利要求3所述的基于JSON數(shù)據(jù)的驗證方法,其特征在于,還包括: 將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)按照預(yù)設(shè)方式排序,得到排序map結(jié)構(gòu)類型數(shù)據(jù)。5.根據(jù)權(quán)利要求1所述的基于JSON數(shù)據(jù)的驗證方法,其特征在于,判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值,包括: 獲取預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu); 判斷所述模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值是否與所述map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值相等。6.一種基于JSON數(shù)據(jù)的驗證裝置,其特征在于,包括: JSON數(shù)據(jù)獲取單元,用于獲取待驗證JSON數(shù)據(jù); 數(shù)據(jù)解析單元,用于將所述待驗證JSON數(shù)據(jù)解析,得到解析對象; 鍵值提取單元,用于提取所述解析對象中的目標(biāo)鍵值; 鍵值判斷單元,用于判斷所述目標(biāo)鍵值是否等于預(yù)設(shè)鍵值; 驗證確定單元,用于在所述目標(biāo)鍵值等于預(yù)設(shè)鍵值時,確定所述待驗證JSON數(shù)據(jù)通過驗證。7.根據(jù)權(quán)利要求6所述的基于JSON數(shù)據(jù)的驗證裝置,其特征在于,所述數(shù)據(jù)解析單元,包括: 數(shù)據(jù)類型轉(zhuǎn)換模塊,用于將所述待驗證JSON數(shù)據(jù)轉(zhuǎn)換為map數(shù)據(jù)結(jié)構(gòu)類型。8.根據(jù)權(quán)利要求7所述的基于JSON數(shù)據(jù)的驗證裝置,其特征在于,所述數(shù)據(jù)類型轉(zhuǎn)換模塊,包括: 數(shù)據(jù)解析子模塊,用于將所述待驗證JSON數(shù)據(jù)解析為待驗證JSON對象; 數(shù)據(jù)轉(zhuǎn)換子模塊,用于將所述待驗證JSON對象中的鍵名轉(zhuǎn)換為xpath路徑結(jié)構(gòu)數(shù)據(jù); 數(shù)據(jù)保存子模塊,用于將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)保存到預(yù)先建立的map數(shù)據(jù)結(jié)構(gòu)中; 鍵值保存子模塊,用于將所述待驗證JSON對象中的鍵值保存到所述map數(shù)據(jù)結(jié)構(gòu)中。9.根據(jù)權(quán)利要求8所述的基于JSON數(shù)據(jù)的驗證裝置,其特征在于,還包括: 排序子模塊,用于將所述xpath路徑結(jié)構(gòu)數(shù)據(jù)按照預(yù)設(shè)方式排序,得到排序map結(jié)構(gòu)類型數(shù)據(jù)。10.根據(jù)權(quán)利要求6所述的基于JSON數(shù)據(jù)的驗證裝置,其特征在于,所述鍵值判斷單元,包括: 數(shù)據(jù)獲取模塊,用于獲取預(yù)先生成的模板map數(shù)據(jù)結(jié)構(gòu); 鍵值判斷模塊,用于判斷所述模板map數(shù)據(jù)結(jié)構(gòu)中的預(yù)設(shè)鍵值是否與所述map數(shù)據(jù)結(jié)構(gòu)中的目標(biāo)鍵值相等。
【文檔編號】G06F11/14GK105868050SQ201511016394
【公開日】2016年8月17日
【申請日】2015年12月29日
【發(fā)明人】馮靜
【申請人】樂視網(wǎng)信息技術(shù)(北京)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乌拉特后旗| 大兴区| 焉耆| 手机| 社旗县| 忻城县| 新邵县| 确山县| 广元市| 晋宁县| 茶陵县| 开原市| 桐柏县| 荣成市| 新昌县| 卫辉市| 镇平县| 海林市| 湛江市| 拉孜县| 汶川县| 宣恩县| 沈丘县| 绥棱县| 区。| 石嘴山市| 白水县| 兴城市| 依兰县| 象州县| 炎陵县| 沂南县| 阜宁县| 呼伦贝尔市| 望谟县| 道孚县| 股票| 榕江县| 阿拉善盟| 乐昌市| 宿迁市|