亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Json數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法及系統(tǒng)的制作方法

文檔序號(hào):9417515閱讀:832來源:國知局
Json數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,更為具體地,涉及一種JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法及系統(tǒng)。
【背景技術(shù)】
[0002]JSON(JavaScript Object Notat1n,JavaScript對(duì)象表示法)是一種輕量級(jí)的數(shù)據(jù)交換格式,它是基于JavaScript的一個(gè)子集。JSON采用完全獨(dú)立于語言的文本格式,不附帶任何標(biāo)記,但也使用了類似于C語言家族的習(xí)慣,正是由于JSON所具有的獨(dú)特特性,使得JSON成為理想的數(shù)據(jù)交換語言,其既易于人閱讀和編寫,同時(shí)也易于機(jī)器轉(zhuǎn)換和生成。例如,可以利用JSON傳遞一個(gè)數(shù)組,也可以傳遞一個(gè)對(duì)象,甚至包括傳遞上述兩者的復(fù)雜對(duì)象等。
[0003]在實(shí)際需求中,經(jīng)常需要將復(fù)雜格式的JSON數(shù)據(jù)展開到二維數(shù)組進(jìn)行存儲(chǔ)或者其他處理。目前將JSON數(shù)據(jù)轉(zhuǎn)換到二維數(shù)組的方法為:首先,通過常用序列化工具將JSON數(shù)據(jù)進(jìn)行序列化,然后對(duì)序列化后的對(duì)象進(jìn)行再處理,并將再處理的對(duì)象轉(zhuǎn)到二維數(shù)組。
[0004]然而,從上述的轉(zhuǎn)換流程可知,由于JSON數(shù)據(jù)的格式并不固定,在利用現(xiàn)有的方法將JSON數(shù)據(jù)轉(zhuǎn)換到二維數(shù)組時(shí),由于需要將JSON數(shù)據(jù)進(jìn)行序列化和再處理,因此,可能會(huì)存在轉(zhuǎn)換后的二維數(shù)組的列數(shù)量不固定的問題,如此便會(huì)造成二維數(shù)組的結(jié)構(gòu)不穩(wěn)定,并且利用現(xiàn)有的方法也不一定能夠?qū)⑷魏胃袷降腏SON數(shù)據(jù)都轉(zhuǎn)換為二維數(shù)組,如此便會(huì)影響到后續(xù)的數(shù)據(jù)存儲(chǔ)或處理。

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

[0005]鑒于上述問題,本發(fā)明的目的是提供一種JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法及系統(tǒng),以解決現(xiàn)有的轉(zhuǎn)換方法存在的轉(zhuǎn)換得到二維數(shù)組結(jié)構(gòu)不穩(wěn)定,并且不能兼容任何格式的JSON數(shù)據(jù)的問題。
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供一種JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法,包括:
[0007]建立內(nèi)存數(shù)據(jù)棧,內(nèi)存數(shù)據(jù)棧包括屬性名稱棧和結(jié)構(gòu)字符棧;
[0008]根據(jù)所建立的內(nèi)存數(shù)據(jù)棧,以JSON數(shù)據(jù)的分隔符為界限,依次讀取JSON數(shù)據(jù)中的各個(gè)字符串,并根據(jù)所讀取的當(dāng)前字符串的類型,對(duì)所讀取的當(dāng)前字符串進(jìn)行二維數(shù)組的轉(zhuǎn)換,JSON數(shù)據(jù)中的字符串的類型包括結(jié)構(gòu)字符、屬性名稱和值對(duì),結(jié)構(gòu)字符包括向左結(jié)構(gòu)字符和向右結(jié)構(gòu)字符,二維數(shù)組包括當(dāng)前名稱和當(dāng)前名稱的值;其中,
[0009]當(dāng)所讀取的當(dāng)前字符串的類型是向右結(jié)構(gòu)字符時(shí),將向右結(jié)構(gòu)字符壓入結(jié)構(gòu)字符棧中;
[0010]當(dāng)所讀取的當(dāng)前字符串的類型是向左結(jié)構(gòu)字符時(shí),將結(jié)構(gòu)字符棧中的棧頂字符彈出結(jié)構(gòu)字符棧,并將彈出結(jié)構(gòu)字符棧的棧頂字符與向左結(jié)構(gòu)字符相匹配,當(dāng)匹配成功時(shí),以屬性名稱棧的棧頂字符作為二維數(shù)組的當(dāng)前名稱,以空值作為二維數(shù)組的當(dāng)前名稱的值拼接一條二維數(shù)組;
[0011]當(dāng)所讀取的當(dāng)前字符串的類型是屬性名稱時(shí),將屬性名稱壓入屬性名稱棧中;
[0012]當(dāng)所讀取的當(dāng)前字符串的類型是值對(duì)時(shí),以屬性名稱棧的棧頂字符作為二維數(shù)組的當(dāng)前名稱,以所讀取的值對(duì)作為二維數(shù)組的當(dāng)前名稱的值拼接一條二維數(shù)組。
[0013]另一方面,本發(fā)明提供一種JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的系統(tǒng),包括:
[0014]數(shù)據(jù)棧建立單元,用于建立內(nèi)存數(shù)據(jù)棧,內(nèi)存數(shù)據(jù)棧包括屬性名稱棧和結(jié)構(gòu)字符棧;
[0015]轉(zhuǎn)換單元,用于根據(jù)數(shù)據(jù)棧建立單元所建立的內(nèi)存數(shù)據(jù)棧,以JSON數(shù)據(jù)的分隔符為界限,依次讀取JSON數(shù)據(jù)中的各個(gè)字符串,并根據(jù)所讀取的當(dāng)前字符串的類型,對(duì)所讀取的當(dāng)前字符串進(jìn)行二維數(shù)組轉(zhuǎn)換,JSON數(shù)據(jù)中的字符串的類型包括結(jié)構(gòu)字符、屬性名稱和值對(duì),結(jié)構(gòu)字符包括向左結(jié)構(gòu)字符和向右結(jié)構(gòu)字符,二維數(shù)組包括當(dāng)前名稱和當(dāng)前名稱的值;其中,轉(zhuǎn)換單元進(jìn)一步包括:
[0016]入棧單元,用于將所讀取到的向右結(jié)構(gòu)字符或者屬性名稱壓入相應(yīng)的內(nèi)存數(shù)據(jù)棧中;其中,將所讀取的向右結(jié)構(gòu)字符壓入結(jié)構(gòu)字符棧中,將所讀取的屬性名稱壓入屬性名稱棧中;
[0017]結(jié)構(gòu)字符出棧單元,用于將結(jié)構(gòu)字符棧的棧頂字符彈出結(jié)構(gòu)字符棧;
[0018]拼接單元,用于根據(jù)所讀取的當(dāng)前字符串進(jìn)行二維數(shù)組的拼接;其中,當(dāng)所讀取的當(dāng)前字符串的類型是向左結(jié)構(gòu)字符時(shí),將結(jié)構(gòu)字符出棧單元所彈出的棧頂字符與向左結(jié)構(gòu)字符相匹配,當(dāng)匹配成功時(shí),拼接單元以屬性名稱棧的棧頂字符作為二維數(shù)組的當(dāng)前名稱,以空值作為二維數(shù)組的當(dāng)前名稱的值拼接一條二維數(shù)組;當(dāng)所讀取的當(dāng)前字符串的類型是值對(duì)時(shí),拼接單元以屬性名稱棧的棧頂字符作為二維數(shù)組的當(dāng)前名稱,以所讀取的值對(duì)作為二維數(shù)組的當(dāng)前名稱的值拼接一條二維數(shù)組。
[0019]利用上述根據(jù)本發(fā)明的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法及系統(tǒng),通過建立的內(nèi)存數(shù)據(jù)棧來繞過傳統(tǒng)的序列化和再處理流程,從而直接轉(zhuǎn)換得到一個(gè)結(jié)構(gòu)穩(wěn)定的二維數(shù)組,并且轉(zhuǎn)換得到的二維數(shù)組對(duì)任何格式的JSON數(shù)據(jù)都兼容,能夠方便后續(xù)進(jìn)行統(tǒng)一存儲(chǔ)、數(shù)據(jù)庫設(shè)計(jì)和再處理等操作。
[0020]為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說明并在權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
【附圖說明】
[0021]通過參考以下結(jié)合附圖的說明及權(quán)利要求書的內(nèi)容,并且隨著對(duì)本發(fā)明的更全面理解,本發(fā)明的其它目的及結(jié)果將更加明白及易于理解。在附圖中:
[0022]圖1為根據(jù)本發(fā)明實(shí)施例的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法流程示意圖;
[0023]圖2為根據(jù)本發(fā)明實(shí)施例的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的系統(tǒng)邏輯結(jié)構(gòu)框圖;
[0024]圖3為根據(jù)本發(fā)明實(shí)施例的JSON數(shù)據(jù)對(duì)應(yīng)的樹形結(jié)構(gòu)圖。
[0025]在所有附圖中相同的標(biāo)號(hào)指示相似或相應(yīng)的特征或功能。
【具體實(shí)施方式】
[0026]以下將結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)描述。
[0027]針對(duì)前述現(xiàn)有的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法存在轉(zhuǎn)換得到的二維數(shù)組結(jié)構(gòu)不穩(wěn)定,且不能兼容任何格式的JSON數(shù)據(jù)的問題,本發(fā)明通過提供一種字符串處理機(jī)制,結(jié)合在內(nèi)存建立的兩個(gè)數(shù)據(jù)棧(即屬性名稱棧和結(jié)構(gòu)字符棧),從而使JSON數(shù)據(jù)到二維數(shù)組的轉(zhuǎn)換繞過傳統(tǒng)的序列化和再處理流程,進(jìn)而直接轉(zhuǎn)換得到一個(gè)結(jié)構(gòu)穩(wěn)定的二維數(shù)組,并且轉(zhuǎn)換得到的二維數(shù)組對(duì)任何格式的JSON數(shù)據(jù)都兼容,能夠方便后續(xù)進(jìn)行統(tǒng)一存儲(chǔ)、數(shù)據(jù)庫設(shè)計(jì)和再處理等。
[0028]為了說明本發(fā)明提供的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法,圖1示出了根據(jù)本發(fā)明實(shí)施例的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法流程。
[0029]如圖1所示,本發(fā)明提供的JSON數(shù)據(jù)轉(zhuǎn)二維數(shù)組的方法包括:
[0030]SllO:在內(nèi)存中建立內(nèi)存數(shù)據(jù)棧,該內(nèi)存數(shù)據(jù)棧包括屬性名稱棧和結(jié)構(gòu)字符棧。
[0031]S120:根據(jù)所建立的內(nèi)存數(shù)據(jù)棧,以JSON數(shù)據(jù)的分隔符為界限,依次讀取JSON數(shù)據(jù)中的各個(gè)字符串,并根據(jù)所讀取的當(dāng)前字符串的類型,對(duì)所讀取的當(dāng)前字符串進(jìn)行二維數(shù)組的轉(zhuǎn)換;其中,JSON數(shù)據(jù)中的字符串類型包括結(jié)構(gòu)字符、屬性名稱和值對(duì),結(jié)構(gòu)字符包括向左結(jié)構(gòu)字符和向右結(jié)構(gòu)字符,二維數(shù)組包括當(dāng)前名稱和當(dāng)前名稱的值。
[0032]其中,JSON數(shù)據(jù)的分隔符為冒號(hào)或者逗號(hào);界限是指在讀取到JSON數(shù)據(jù)的分隔符時(shí)即認(rèn)為此次字符串讀取完畢。例如,一個(gè)JSON數(shù)據(jù)為:{Data: {PR: []}},在讀取該JSON數(shù)據(jù)時(shí),當(dāng)讀取到“Data”后的
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1