本發(fā)明涉及數(shù)據(jù)處理
技術領域:
,尤其涉及一種數(shù)據(jù)序列化方法及裝置。
背景技術:
:隨著“大數(shù)據(jù)時代”的到來,越來越多的數(shù)據(jù)需要被整合、加載到數(shù)據(jù)倉庫中,以成為數(shù)據(jù)分析處理以及數(shù)據(jù)挖掘的基礎。在整個構建數(shù)據(jù)倉庫的過程中,數(shù)據(jù)從采集、解析到入庫,要經(jīng)過一套完整的流程。數(shù)據(jù)經(jīng)采集器采集并傳輸至解析程序中,解析程序將原始數(shù)據(jù)轉換成系統(tǒng)可識別的數(shù)據(jù),并將其輸入至緩存中。之后,入庫程序從緩存中獲得轉換后的數(shù)據(jù),并將數(shù)據(jù)轉換成符合庫表結構的數(shù)據(jù)存入數(shù)據(jù)倉庫,從而完成入庫操作。目前,常用JSON數(shù)據(jù)格式對原數(shù)據(jù)進行數(shù)據(jù)轉換,得到序列化后的數(shù)據(jù)。但是這些數(shù)據(jù)轉換方式在應用中存在以下問題:針對JSON數(shù)據(jù)格式的轉換方式,JSON數(shù)據(jù)格式是一種以文本格式出現(xiàn)的數(shù)據(jù)格式,在原數(shù)據(jù)中字段較多的場景下,會出現(xiàn)編解碼難度大且序列化后數(shù)據(jù)占用較大存儲空間的問題,這就會增加網(wǎng)絡傳輸以及磁盤IO的壓力。技術實現(xiàn)要素:本發(fā)明提供一種數(shù)據(jù)序列化方法,用于解決現(xiàn)有技術中數(shù)據(jù)轉換方式在原數(shù)據(jù)中字段較多的場景下,所出現(xiàn)的編解碼難度大且序列化后數(shù)據(jù)占用較大存儲空間的問題,進而降低網(wǎng)絡傳輸以及磁盤IO的壓力。一種數(shù)據(jù)序列化方法,包括:獲取原數(shù)據(jù),所述原數(shù)據(jù)包括至少一個字段,每個字段包括字段名以及字段名對應的字段內容;針對預設數(shù)據(jù)模板中的每個字段名,從所述原數(shù)據(jù)中獲取該字段名對應的字段內容,所述預設數(shù)據(jù)模板中預先存儲了字段名、數(shù)據(jù)類型以及字段編號的關聯(lián)關系,所述數(shù)據(jù)類型為字段內容的數(shù)據(jù)類型;按照該字段名關聯(lián)的數(shù)據(jù)類型對應的序列化方式,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列;按照字段編號由小到大的順序,將得到的各個字段名所屬的字段對應的字節(jié)序列拼接成一個字節(jié)序列,作為所述原數(shù)據(jù)對應的序列化數(shù)據(jù)??蛇x地,所述方法中所述數(shù)據(jù)類型包括整型、字符串型、雙精度浮點型、長整型??蛇x地,所述方法中,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,具體包括:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容在預設范圍內,利用變字節(jié)長度的編碼方式,分別對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列,所述預設范圍為[0,228);以及利用所述變字節(jié)長度的編碼方式,對用于表示所述變字節(jié)長度的編碼方式的標識進行序列化,得到所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。可選地,所述方法,還包括:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容不在預設范圍內,利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;以及利用所述變字節(jié)長度的編碼方式,分別對該字段名關聯(lián)的字段編號以及用于表示所述固定字節(jié)長度的編碼方式的標識進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列以及所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。可選地,所述方法中,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,具體包括:若該字段名關聯(lián)的數(shù)據(jù)類型為字符串型,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;確定該字段名對應的字段內容對應的字節(jié)序列所占的字節(jié)長度;利用變字節(jié)長度的編碼方式,對所述字節(jié)長度以及該字段名關聯(lián)的字段編號進行序列化,得到所述字節(jié)長度對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述字節(jié)長度對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述字節(jié)長度對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述方法中,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,具體包括:若該字段名關聯(lián)的數(shù)據(jù)類型為雙精度浮點型或長整型,利用變字節(jié)長度的編碼方式,對該字段名關聯(lián)的字段編號進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列;以及利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列與該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,該字段名關聯(lián)的字段編號對應的字節(jié)序列位于該字段名對應的字段內容對應的字節(jié)序列之前。可選地,所述方法,還包括:按照所述預設數(shù)據(jù)模板中各個字段編號由小到大的順序,針對所述預設數(shù)據(jù)模板中的每個字段編號,執(zhí)行以下反序列化步驟:根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。本發(fā)明還提供一種數(shù)據(jù)序列化裝置,包括:第一獲取模塊,用于獲取原數(shù)據(jù),所述原數(shù)據(jù)包括至少一個字段,每個字段包括字段名以及字段名對應的字段內容;第二獲取模塊,用于針對預設數(shù)據(jù)模板中的每個字段名,從所述原數(shù)據(jù)中獲取該字段名對應的字段內容,所述預設數(shù)據(jù)模板中預先存儲了字段名、數(shù)據(jù)類型以及字段編號的關聯(lián)關系,所述數(shù)據(jù)類型為字段內容的數(shù)據(jù)類型;序列化模塊,用于按照該字段名關聯(lián)的數(shù)據(jù)類型對應的序列化方式,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列;拼接模塊,用于按照字段編號由小到大的順序,將得到的各個字段名所屬的字段對應的字節(jié)序列拼接成一個字節(jié)序列,作為所述原數(shù)據(jù)對應的序列化數(shù)據(jù)??蛇x地,所述裝置中,所述數(shù)據(jù)類型包括整型、字符串型、雙精度浮點型、長整型??蛇x地,所述裝置中,所述序列化模塊,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容在預設范圍內,利用變字節(jié)長度的編碼方式,分別對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列,所述預設范圍為[0,228);以及利用所述變字節(jié)長度的編碼方式,對用于表示所述變字節(jié)長度的編碼方式的標識進行序列化,得到所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置中,所述序列化模塊,還用于:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容不在預設范圍內,利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;以及利用所述變字節(jié)長度的編碼方式,分別對該字段名關聯(lián)的字段編號以及用于表示所述固定字節(jié)長度的編碼方式的標識進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列以及所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。可選地,所述裝置中,所述序列化模塊,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為字符串型,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;確定該字段名對應的字段內容對應的字節(jié)序列所占的字節(jié)長度;利用變字節(jié)長度的編碼方式,對所述字節(jié)長度以及該字段名關聯(lián)的字段編號進行序列化,得到所述字節(jié)長度對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述字節(jié)長度對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述字節(jié)長度對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置中,所述序列化模塊,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為雙精度浮點型或長整型,利用變字節(jié)長度的編碼方式,對該字段名關聯(lián)的字段編號進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列;以及利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列與該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,該字段名關聯(lián)的字段編號對應的字節(jié)序列位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置,還包括:反序列化模塊,用于按照所述預設數(shù)據(jù)模板中各個字段編號由小到大的順序,針對所述預設數(shù)據(jù)模板中的每個字段編號,執(zhí)行以下反序列化步驟:根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。利用本發(fā)明提供的數(shù)據(jù)序列化方法及裝置,具有以下有益效果:得到的序列化后的數(shù)據(jù)以二進制字節(jié)序列的形式呈現(xiàn),可以有效地減少數(shù)據(jù)占用空間,數(shù)據(jù)傳輸以及磁盤讀寫的效率也可得到一定程度的提升,數(shù)據(jù)模板中存儲的關聯(lián)關系復雜度低,無嵌套格式,降低了數(shù)據(jù)序列化的難度。此外,數(shù)據(jù)模板中僅存儲字段名、數(shù)據(jù)類型和字段編號的關聯(lián)關系,可根據(jù)不同的原數(shù)據(jù)生成不同的數(shù)據(jù)模板,若數(shù)據(jù)模板需要修改,僅涉及關聯(lián)關系的修改,并可通過讀取配置文件或其他數(shù)據(jù)中間件來生成數(shù)據(jù)模版,不涉及代碼修改以及重新編譯生成數(shù)據(jù)模板的過程,從而能夠較靈活的設置數(shù)據(jù)模板,進而能夠在一定程度上提高數(shù)據(jù)序列化的效率。附圖說明圖1為本發(fā)明實施例提供的數(shù)據(jù)序列化方法的流程示意圖;圖2為本發(fā)明一實施例提供的得到字段名所屬的字段對應的字節(jié)序列的方法流程意圖;圖3為本發(fā)明另一實施例提供的得到字段名所屬的字段對應的字節(jié)序列的方法流程意圖;圖4為本發(fā)明又一實施例提供的得到字段名所屬的字段對應的字節(jié)序列的方法流程意圖;圖5為本發(fā)明實施例提供的得到的序列化后數(shù)據(jù)的格式示意圖;圖6為本發(fā)明實施例提供的數(shù)據(jù)反序列化方法的流程示意圖;圖7為本發(fā)明實施例提供的數(shù)據(jù)序列化裝置結構示意圖。具體實施方式下面結合附圖和實施例對本發(fā)明提供的數(shù)據(jù)序列化方法進行更詳細地說明。本發(fā)明實施例提供一種數(shù)據(jù)序列化方法,如圖1所示,包括:步驟101,獲取原數(shù)據(jù),所述原數(shù)據(jù)包括至少一個字段,每個字段包括字段名以及字段名對應的字段內容。具體的,原數(shù)據(jù)包括至少一個字段,每個字段包括字段名和字段內容,字段名與字段內容對應,每個字段以鍵值(Key-Value)對的形式存儲,其中,(Key,Value)=(字段名,字段內容),原數(shù)據(jù)中不同字段名對應不同的字段內容,原數(shù)據(jù)中包括至少一個鍵值對,即原數(shù)據(jù)中包括至少一個字段名以及各個字段名對應的字段內容。步驟102,針對預設數(shù)據(jù)模板中的每個字段名,從所述原數(shù)據(jù)中獲取該字段名對應的字段內容。其中,所述預設數(shù)據(jù)模板中預先存儲了字段名、數(shù)據(jù)類型以及字段編號的關聯(lián)關系,所述數(shù)據(jù)類型為字段內容的數(shù)據(jù)類型。具體的,預先存儲原數(shù)據(jù)對應的數(shù)據(jù)模板,即預設數(shù)據(jù)模板,該預設數(shù)據(jù)模板中存儲了原數(shù)據(jù)中預進行序列化的字段的字段名,以及各個字段名關聯(lián)的數(shù)據(jù)類型和字段編號。其中,預設數(shù)據(jù)模板中的字段名、數(shù)據(jù)類型和字段編號的關聯(lián)關系也可以鍵值對的形式存儲,此時,鍵值對(Key,Value)=(字段編號,(字段名,數(shù)據(jù)類型)),其中的數(shù)據(jù)類型具體指與該數(shù)據(jù)類型關聯(lián)的字段名對應的原數(shù)據(jù)中的字段內容的數(shù)據(jù)類型,不同字段名關聯(lián)的字段編號不同。具體實施時,可針對預設數(shù)據(jù)模板中的每個字段名,判斷所述原數(shù)據(jù)中是否包含該字段名,如果是,從原數(shù)據(jù)中獲取該字段名對應的字段內容。步驟103,按照該字段名關聯(lián)的數(shù)據(jù)類型對應的序列化方式,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列。具體的,根據(jù)預設數(shù)據(jù)模板中字段名、數(shù)據(jù)類型以及字段編號的關聯(lián)關系,確定該字段名關聯(lián)的數(shù)據(jù)類型和字段編號。本發(fā)明實施例中,從原數(shù)據(jù)中獲取預設數(shù)據(jù)模板中的每個字段名對應的字段內容,并根據(jù)數(shù)據(jù)模板中各個字段名關聯(lián)的數(shù)據(jù)類型對應的序列化方式,對相應字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,即得到原數(shù)據(jù)中該字段名所屬的字段對應的序列化后的數(shù)據(jù)。步驟104,按照字段編號由小到大的順序,將得到的各個字段名所屬的字段對應的字節(jié)序列拼接成一個字節(jié)序列,作為所述原數(shù)據(jù)對應的序列化數(shù)據(jù)。具體的,針對數(shù)據(jù)模板中每個字段名所屬的字段對應的字節(jié)序列,按照字段名關聯(lián)的字段編號由小到大的順序,將各個字段名所屬的字段對應的字節(jié)序列拼接成一個字節(jié)序列,從而得到原數(shù)據(jù)中預進行序列化的字段對應的序列化數(shù)據(jù)。本發(fā)明實施例,得到的序列化后的數(shù)據(jù)以二進制字節(jié)序列的形式呈現(xiàn),可以有效地減少數(shù)據(jù)占用空間,數(shù)據(jù)傳輸以及磁盤讀寫的效率也可得到一定程度的提升,數(shù)據(jù)模板中存儲的關聯(lián)關系復雜度低,無嵌套格式,降低了數(shù)據(jù)序列化的難度。此外,本發(fā)明實施例,數(shù)據(jù)模板中僅存儲字段名、數(shù)據(jù)類型和字段編號的關聯(lián)關系,可根據(jù)不同的原數(shù)據(jù)生成不同的數(shù)據(jù)模板,若數(shù)據(jù)模板需要修改,僅涉及關聯(lián)關系的修改,并可通過讀取配置文件或其他數(shù)據(jù)中間件來生成數(shù)據(jù)模版,不涉及代碼修改以及重新編譯生成數(shù)據(jù)模板的過程,從而能夠較靈活的設置數(shù)據(jù)模板,進而能夠在一定程度上提高數(shù)據(jù)序列化的效率。優(yōu)選地,數(shù)據(jù)類型包括整型(int)、字符串型(string)、雙精度浮點型(double)、長整型(long)。具體的,字段名對應的字段內容的數(shù)據(jù)類型可能多種多樣,本發(fā)明實施例預先根據(jù)原數(shù)據(jù)中預進行序列化的字段的字段內容的數(shù)據(jù)類型以及預進行序列化的字段的字段名,保存字段名與數(shù)據(jù)類型的關聯(lián)關系。作為一種實施方式,針對預設數(shù)據(jù)模板中的各個字段名,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,如圖2所示,具體包括:步驟201,若該字段名關聯(lián)的數(shù)據(jù)類型為整型,判斷該字段名對應的字段內容是否在預設范圍內,如果是,執(zhí)行步驟202,否則,執(zhí)行步驟205。其中,預設范圍為[0-228)。步驟202,利用變字節(jié)長度的編碼方式,分別對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列。具體的,若該字段名關聯(lián)的數(shù)據(jù)類型為整型且該字段名對應的字段內容在[0-228)范圍內,執(zhí)行步驟202。其中,變字節(jié)長度的編碼方式可以為Base128Varints編碼(簡稱Varints編碼),也可以為其它變字節(jié)長度的編碼方式,這里不做限定。其中,Varints編碼對于數(shù)值較小的整型數(shù)據(jù)有很好的壓縮效果,不同的整型數(shù)據(jù)的數(shù)值范圍內的數(shù)值在利用Varints編碼方式序列化后所占的字節(jié)長度如表一所示。表一數(shù)值范圍序列化后所占字節(jié)數(shù)[0,27)1[27,214)2[214,221)3[221,228)4[228,231)5本發(fā)明實施例中,針對數(shù)值范圍在[0-228)范圍內的整型數(shù)據(jù),采用變字節(jié)長度的編碼方式進行序列化。步驟203,利用所述變字節(jié)長度的編碼方式,對用于表示所述變字節(jié)長度的編碼方式的標識進行序列化,得到所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列。具體的,可設置用于表示變字節(jié)長度的編碼方式的標識為1,對變字節(jié)長度的編碼方式的標識進行序列化后,可在進行相應的反序列化時,獲知應該采用何種解碼方式對該字段名所屬的字段對應的字節(jié)序列進行反序列化,從而得到原數(shù)據(jù)該字段名對應的字段內容。由于字段編號以及標識對應的數(shù)值較小,一般均在[0-228)范圍內,因此,本發(fā)明實施例采用變字節(jié)長度的編碼方式分別對字段編號以及標識進行序列化,可在一定程度上減小序列化后數(shù)據(jù)所占的空間。步驟204,將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列。其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。具體的,將該字段名所屬的字段對應的字節(jié)序列進行存儲,存儲時該字段名所屬的字段對應的字節(jié)序列的存儲格式為:變字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前,其中,該字段名關聯(lián)的字段編號對應的字節(jié)序列、變字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列連續(xù)存儲。步驟205,利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列。具體的,若該字段名關聯(lián)的數(shù)據(jù)類型為整型且該字段名對應的字段內容不在[0-228)范圍內,執(zhí)行步驟205。其中,固定字節(jié)長度的編碼方式為按字節(jié)取出,然后輸出一個長度為4的字節(jié)數(shù)組的編碼方式,具體的編碼過程為現(xiàn)有技術,這里不做詳述?,F(xiàn)有技術中,整型數(shù)據(jù)是一種4字節(jié)的定長數(shù)據(jù)類型,本步驟中,針對不在[0-228)范圍內的整型數(shù)據(jù),采用現(xiàn)有的固定長度的編碼方式進行序列化即可。步驟206,利用所述變字節(jié)長度的編碼方式,分別對該字段名關聯(lián)的字段編號以及用于表示所述固定字節(jié)長度的編碼方式的標識進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列以及所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列。具體的,可設置用于表示固定字節(jié)長度的編碼方式的標識為0,對固定字節(jié)長度的編碼方式的標識進行序列化后,可在進行相應的反序列化時,獲知應該采用何種解碼方式對該字段名所屬的字段對應的字節(jié)序列進行反序列化,從而得到原數(shù)據(jù)該字段名對應的字段內容。由于字段編號以及標識對應的數(shù)值較小,一般均在[0-228)范圍內,因此,本發(fā)明實施例采用變字節(jié)長度的編碼方式分別對字段編號以及標識進行序列化,可在一定程度上減小序列化后數(shù)據(jù)所占的空間。步驟207,將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列。其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。具體的,將該字段名所屬的字段對應的字節(jié)序列進行存儲,存儲時該字段名所屬的字段對應的字節(jié)序列的存儲格式為:固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前,其中,該字段名關聯(lián)的字段編號對應的字節(jié)序列、固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列連續(xù)存儲。本發(fā)明實施例,針對不同數(shù)值范圍內的整型數(shù)據(jù)進行不同形式的序列化,可以有效地減少數(shù)據(jù)占用空間,數(shù)據(jù)傳輸以及磁盤讀寫的效率也可得到一定程度的提升,序列化后的數(shù)據(jù)之間關系復雜度低,提高了數(shù)據(jù)序列化的效率。作為另一種實施方式,針對預設數(shù)據(jù)模板中的各個字段名,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,如圖3所示,具體包括:步驟301,若該字段名關聯(lián)的數(shù)據(jù)類型為字符串型,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列。現(xiàn)有技術中,字符串型的數(shù)據(jù)為一種不定長的數(shù)據(jù)類型,因此對字符串型的字段內容進行序列化后,各個字段內容對應的字節(jié)序列所占的字節(jié)數(shù)可能相同也可能不同,本步驟中,可按照現(xiàn)有的對字符串型數(shù)據(jù)進行序列化的方式進行序列化,具體序列化的實施過程這里不做詳述。步驟302,確定該字段名對應的字段內容對應的字節(jié)序列所占的字節(jié)長度。具體的,由于各個字段內容對應的字節(jié)序列所占的字節(jié)數(shù)可能相同也可能不同,因此需要記錄各字段名對應的字段內容對應的字節(jié)序列所占的字節(jié)長度,以便在反序列化操作時能夠準確的尋址到相應的字段內容。步驟303,利用變字節(jié)長度的編碼方式,對所述字節(jié)長度以及該字段名關聯(lián)的字段編號進行序列化,得到所述字節(jié)長度對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列。關于變字節(jié)長度的編碼方式的解釋以及有益效果說明詳見上文,這里不做贅述。步驟304,將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述字節(jié)長度對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列。其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述字節(jié)長度對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前。具體的,將該字段名所屬的字段對應的字節(jié)序列進行存儲,存儲時該字段名所屬的字段對應的字節(jié)序列的存儲格式為:字節(jié)長度對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前,其中,該字段名關聯(lián)的字段編號對應的字節(jié)序列、字節(jié)長度對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列連續(xù)存儲。作為又一種實施方式,針對預設數(shù)據(jù)模板中的各個字段名,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列,如圖4所示,具體包括:步驟401,若該字段名關聯(lián)的數(shù)據(jù)類型為雙精度浮點型或長整型,利用變字節(jié)長度的編碼方式,對該字段名關聯(lián)的字段編號進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列。具體的,關于變字節(jié)長度的編碼方式的解釋說明以及有益效果詳見上文,這里不做贅述。步驟402,利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列?,F(xiàn)有技術中,雙精度浮點型或長整型都是8字節(jié)的定長數(shù)據(jù)類型,本步驟中針對雙精度浮點型或長整型的序列化方式為按字節(jié)取出后輸出到一個長度為8的字節(jié)數(shù)組中,具體的實施過程為現(xiàn)有技術,這里不做詳述。步驟403,將該字段名關聯(lián)的字段編號對應的字節(jié)序列與該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列。其中,得到的該字段名所屬的字段對應的字節(jié)序列中,該字段名關聯(lián)的字段編號對應的字節(jié)序列位于該字段名對應的字段內容對應的字節(jié)序列之前。具體的,將該字段名所屬的字段對應的字節(jié)序列進行存儲,存儲時該字段名所屬的字段對應的字節(jié)序列的存儲格式為:該字段名關聯(lián)的字段編號對應的字節(jié)序列位于該字段名對應的字段內容對應的字節(jié)序列之前,且,該字段名關聯(lián)的字段編號對應的字節(jié)序列與該字段名對應的字段內容對應的字節(jié)序列連續(xù)存儲。發(fā)明人利用JSON數(shù)據(jù)格式對實驗用原數(shù)據(jù)進行了數(shù)據(jù)轉換,并利用本發(fā)明實施例對相同的實驗用原數(shù)據(jù)進行了序列化,實驗用原數(shù)據(jù)中包含47個字段,字段包括字段名和字段名對應的字段內容,得到的結果中,利用JSON數(shù)據(jù)格式得到的轉換后數(shù)據(jù)的長度為1407個字節(jié),利用本發(fā)明實施例提供的數(shù)據(jù)序列化方式得到的序列化數(shù)據(jù)的長度為325個字節(jié),由此可見,利用本發(fā)明實施例提供的數(shù)據(jù)序列化方法能夠有效減少轉換后數(shù)據(jù)的占用空間,其中,實驗用原數(shù)據(jù)中的字段內容的數(shù)據(jù)類型包括雙精度浮點型、整型、字符串型以及長整型。需要說明的是,本發(fā)明實施例的原數(shù)據(jù)中的字段內容的數(shù)據(jù)類型包括雙精度浮點型、整型、字符串型、長整型中的至少一種。下面舉例說明利用本發(fā)明實施例得到的原數(shù)據(jù)對應的序列化數(shù)據(jù)格式,假設原數(shù)據(jù)如表二所示,數(shù)據(jù)模板如表三所示:表二Key(字段名)Value(字段內容)姓名張三成績90身高199表三Key(字段編號)Value(字段名,數(shù)據(jù)類型)1(姓名,string)2(成績,int)3(身高,double)根據(jù)發(fā)明實施例提供的數(shù)據(jù)序列化方法,利用表三提供數(shù)據(jù)模板對表二中原數(shù)據(jù)進行序列化后,得到的序列化后數(shù)據(jù)的格式如圖5所示,其中,字節(jié)序列1為字段編號1對應的字節(jié)序列;字節(jié)序列2為張三所占的字節(jié)長度對應的字節(jié)序列;字節(jié)序列3為張三對應的字節(jié)序列;字節(jié)序列4為字段編號2對應的字節(jié)序列;字節(jié)序列5為變字節(jié)長度的編碼方式的標識對應的字節(jié)序列;字節(jié)序列6為90對應的字節(jié)序列;字節(jié)序列7為字段編號3對應的字節(jié)序列;字節(jié)序列8為199對應的字節(jié)序列。圖5所示的原數(shù)據(jù)對應的序列化數(shù)據(jù)以預設存儲區(qū)域的設定位置為起始位置,連續(xù)存儲到該預設存儲區(qū)域。實際應用場景中,還涉及對原數(shù)據(jù)對應的序列化數(shù)據(jù)進行反序列化的操作,反序列化的過程與序列化的過程相反,即將序列化數(shù)據(jù)還原為原數(shù)據(jù)的過程,優(yōu)選地,本發(fā)明實施可采用如下方式對原數(shù)據(jù)對應的序列化數(shù)據(jù)進行反序列化:按照所述預設數(shù)據(jù)模板中各個字段編號由小到大的順序,針對所述預設數(shù)據(jù)模板中的每個字段編號,執(zhí)行以下反序列化步驟:根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。具體的,從最小的字段編號開始,針對預設數(shù)據(jù)模板中的每個字段編號,確定該字段編號關聯(lián)的數(shù)據(jù)類型,根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。具體實施時,根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化,如圖6所示,包括:步驟601,利用變字節(jié)長度的編碼方式對應的解碼方式,從所述原數(shù)據(jù)對應的序列化數(shù)據(jù)的當前位置處解析出字段編號。具體的,解析出的字段編號為反序列化后的字段編號。關于變字節(jié)長度的編碼方式的說明詳見上文,這里不做贅述。具體實施時,原數(shù)據(jù)對應的序列化后數(shù)據(jù)在存儲時,可記錄每個字段編號對應的字節(jié)序列的起始位置,反序列化時,可根據(jù)各個字段編號的起始位置先對字段編號進行反序列化,其中,當前位置為當前正在進行反序列化的字段編號的起始位置。步驟602,若該字段編號與解析得到的字段編號相同,根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。其中,該字段編號為所述預設數(shù)據(jù)模板中當前順序的字段編號。具體實施時,若該字段編號關聯(lián)的數(shù)據(jù)類型為整型,則根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化,包括:利用變字節(jié)長度的編碼方式對應的解碼方式,從原數(shù)據(jù)對應的序列化數(shù)據(jù)中解析出位于該字段編號對應的字節(jié)序列之后的編碼方式標識;根據(jù)編碼方式標識對應的編碼方式對應的解碼方式,從原數(shù)據(jù)對應的序列化數(shù)據(jù)中獲取位于該編碼方式標識對應的字節(jié)序列之后的字段內容進行反序列化。其中,解析出的編碼方式標識為反序列化后的編碼方式標識,其中,當編碼方式標識為1時,表明編碼方式為變字節(jié)長度的編碼方式,當編碼方式標識為0時,表明編碼方式為固定字節(jié)長度的編碼方式。具體實施時,若該字段編號關聯(lián)的數(shù)據(jù)類型為字符串型,則根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化,包括:利用變字節(jié)長度的編碼方式對應的解碼方式,從原數(shù)據(jù)對應的序列化數(shù)據(jù)中解析出位于該字段編號對應的字節(jié)序列之后的字節(jié)長度;從原數(shù)據(jù)對應的序列化數(shù)據(jù)中獲取位于該字節(jié)長度對應的字節(jié)序列之后獲取所述字節(jié)長度個字節(jié),并對該字節(jié)長度個字節(jié)進行反序列化,得到字段內容。其中,解析出的字節(jié)長度為反序列化后的字節(jié)長度,其中,可按照現(xiàn)有的對字符串型數(shù)據(jù)進行反序列化的方式對該字節(jié)長度個字節(jié)進行反序列化,具體序列化的實施過程這里不做詳述。具體實施時,若該字段編號關聯(lián)的數(shù)據(jù)類型為雙精度浮點型或長整型,則根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化,包括:利用固定字節(jié)長度的編碼方式對應的解碼方式,從原數(shù)據(jù)對應的序列化數(shù)據(jù)中解析出位于該字段編號對應的字節(jié)序列之后的字段內容。需要說明的是,本發(fā)明實施例中涉及的數(shù)據(jù)類型對應的反序列化方式與該數(shù)據(jù)類型對應的序列化方式相對應,即反序列化方式為序列化方式的反過程。繼續(xù)沿用上例,假設張三所占的字節(jié)數(shù)為4字節(jié),則根據(jù)本發(fā)明實施例提供的序列化方法可知,圖5中的字節(jié)序列1所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列2所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列3所占的字節(jié)數(shù)為4字節(jié),字節(jié)序列4所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列5所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列6所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列7所占的字節(jié)數(shù)為1字節(jié),字節(jié)序列8所占的字節(jié)數(shù)為8字節(jié),則對圖5中的序列化數(shù)據(jù)進行反序列的過程如下:按照字段編號由小到大的順序,依次對表三提供的數(shù)據(jù)模板中的字段編號1,2,3關聯(lián)的字段名對應的字段內容進行反序列化。下面說明對字段編號1關聯(lián)的字段名對應的字段內容進行反序列化的過程:確定字段編號1關聯(lián)的數(shù)據(jù)類型為string,根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從圖5的起始位置(最左側)獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號1;根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從字段編號1對應的字節(jié)序列之后再獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到字節(jié)長度4;從字節(jié)長度4對應的字節(jié)序列之后再獲取4字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號1關聯(lián)的字段名對應的字段內容。下面說明對字段編號2關聯(lián)的字段名對應的字段內容進行反序列化的過程:確定字段編號2關聯(lián)的數(shù)據(jù)類型為int,根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從圖5中的字節(jié)序列3之后獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號2;根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從字段編號2對應的字節(jié)序列之后再獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到編碼方式標識1;根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從編碼方式標識1對應的字節(jié)序列之后再獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號2關聯(lián)的字段名對應的字段內容。下面說明對字段編號3關聯(lián)的字段名對應的字段內容進行反序列化的過程:確定字段編號3關聯(lián)的數(shù)據(jù)類型為double,根據(jù)變字節(jié)長度的編碼方式對應的解碼方式,從圖5中的字節(jié)序列6之后獲取1字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號3;根據(jù)固定節(jié)長度的編碼方式對應的解碼方式,從字段編號3對應的字節(jié)序列之后再獲取8字節(jié)長度的字節(jié)序列進行反序列化,得到字段編號3關聯(lián)的字段名對應的字段內容。基于與上述實施例提供的數(shù)據(jù)序列化方法同樣的發(fā)明構思,本發(fā)明還提供一種數(shù)據(jù)序列化裝置,如圖7所示,包括:第一獲取模塊701,用于獲取原數(shù)據(jù),所述原數(shù)據(jù)包括至少一個字段,每個字段包括字段名以及字段名對應的字段內容;第二獲取模塊702,用于針對預設數(shù)據(jù)模板中的每個字段名,從所述原數(shù)據(jù)中獲取該字段名對應的字段內容,所述預設數(shù)據(jù)模板中預先存儲了字段名、數(shù)據(jù)類型以及字段編號的關聯(lián)關系,所述數(shù)據(jù)類型為字段內容的數(shù)據(jù)類型;序列化模塊703,用于按照該字段名關聯(lián)的數(shù)據(jù)類型對應的序列化方式,對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名所屬的字段對應的字節(jié)序列;拼接模塊704,用于按照字段編號由小到大的順序,將得到的各個字段名所屬的字段對應的字節(jié)序列拼接成一個字節(jié)序列,作為所述原數(shù)據(jù)對應的序列化數(shù)據(jù)??蛇x地,所述裝置中,所述數(shù)據(jù)類型包括整型、字符串型、雙精度浮點型、長整型??蛇x地,所述裝置中,所述序列化模塊703,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容在預設范圍內,利用變字節(jié)長度的編碼方式,分別對該字段名對應的字段內容以及該字段名關聯(lián)的字段編號進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列,所述預設范圍為[0,228);以及利用所述變字節(jié)長度的編碼方式,對用于表示所述變字節(jié)長度的編碼方式的標識進行序列化,得到所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述變字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置中,所述序列化模塊703,還用于:若該字段名關聯(lián)的數(shù)據(jù)類型為整型,且該字段名對應的字段內容不在預設范圍內,利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;以及利用所述變字節(jié)長度的編碼方式,分別對該字段名關聯(lián)的字段編號以及用于表示所述固定字節(jié)長度的編碼方式的標識進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列以及所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述固定字節(jié)長度的編碼方式的標識對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置中,所述序列化模塊703,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為字符串型,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;確定該字段名對應的字段內容對應的字節(jié)序列所占的字節(jié)長度;利用變字節(jié)長度的編碼方式,對所述字節(jié)長度以及該字段名關聯(lián)的字段編號進行序列化,得到所述字節(jié)長度對應的字節(jié)序列以及該字段名關聯(lián)的字段編號對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列、所述字節(jié)長度對應的字節(jié)序列以及該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,所述字節(jié)長度對應的字節(jié)序列位于該字段名關聯(lián)的字段編號對應的字節(jié)序列之后,并且位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置中,所述序列化模塊703,具體用于:若該字段名關聯(lián)的數(shù)據(jù)類型為雙精度浮點型或長整型,利用變字節(jié)長度的編碼方式,對該字段名關聯(lián)的字段編號進行序列化,得到該字段名關聯(lián)的字段編號對應的字節(jié)序列;以及利用固定字節(jié)長度的編碼方式,對該字段名對應的字段內容進行序列化,得到該字段名對應的字段內容對應的字節(jié)序列;將該字段名關聯(lián)的字段編號對應的字節(jié)序列與該字段名對應的字段內容對應的字節(jié)序列進行拼接,得到該字段名所屬的字段對應的字節(jié)序列;其中,得到的該字段名所屬的字段對應的字節(jié)序列中,該字段名關聯(lián)的字段編號對應的字節(jié)序列位于該字段名對應的字段內容對應的字節(jié)序列之前??蛇x地,所述裝置,還包括:反序列化模塊705,用于按照所述預設數(shù)據(jù)模板中各個字段編號由小到大的順序,針對所述預設數(shù)據(jù)模板中的每個字段編號,執(zhí)行以下反序列化步驟:根據(jù)該字段編號關聯(lián)的數(shù)據(jù)類型對應的反序列化方式,對該字段編號關聯(lián)的字段名對應的字段內容進行反序列化。利用本發(fā)明提供的數(shù)據(jù)序列化方法及裝置,具有以下有益效果:得到的序列化后的數(shù)據(jù)以二進制字節(jié)序列的形式呈現(xiàn),可以有效地減少數(shù)據(jù)占用空間,數(shù)據(jù)傳輸以及磁盤讀寫的效率也可得到一定程度的提升,數(shù)據(jù)模板中存儲的關聯(lián)關系復雜度低,無嵌套格式,降低了數(shù)據(jù)序列化的難度。此外,數(shù)據(jù)模板中僅存儲字段名、數(shù)據(jù)類型和字段編號的關聯(lián)關系,可根據(jù)不同的原數(shù)據(jù)生成不同的數(shù)據(jù)模板,若數(shù)據(jù)模板需要修改,僅涉及關聯(lián)關系的修改,并可通過讀取配置文件或其他數(shù)據(jù)中間件來生成數(shù)據(jù)模版,不涉及代碼修改以及重新編譯生成數(shù)據(jù)模板的過程,從而能夠較靈活的設置數(shù)據(jù)模板,進而能夠在一定程度上提高數(shù)據(jù)序列化的效率。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。當前第1頁1 2 3