久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

PHP串行化與JSON

瀏覽:147日期:2024-01-14 13:11:50

原文連接:http://hi.baidu.com/lostdays/blog/item/8d76c300ec4e3c15738b65fa.html

總目錄

What 、Why、How

What; Why; How

PHP串行化語法; PHP串行化實(shí)例; 在JavaScript中串行化為JSON—使用json2.js; 在JavaScript中串行化為JSON—使用prototype.js

PHP與JSON

json_decode函數(shù); json_encode函數(shù); json_decode函數(shù)實(shí)例; json_encode函數(shù)實(shí)例

實(shí)踐出真知

背景說明; 前臺(tái)JavaScript部分; 后臺(tái)PHP部分

What 、Why、How

What

Ok,各位親愛的朋友,讓我們開始這個(gè)新概念的旅程,串行化這個(gè)話題可能大家以前都沒有多加關(guān)注,事情其實(shí)起源于那天我隨便翻翻PHP手冊(cè),發(fā)現(xiàn)這個(gè)串行化的函數(shù),之后閑來無聊又做一個(gè)WordPress的插件,這個(gè)時(shí)候順便用了一下串行化,發(fā)現(xiàn)在某些場(chǎng)合的確非常方便。

先來解釋下串行化:簡(jiǎn)單來說,串行化即將變量轉(zhuǎn)換成字節(jié)流的過程。串行化的提出,有效的解決了對(duì)象的保存和傳輸?shù)膯栴},舉例來說,我在JavaScript 中建立了一個(gè)對(duì)象,我現(xiàn)在想將這個(gè)對(duì)象保存到服務(wù)器端的數(shù)據(jù)庫(kù)中,那么我如何進(jìn)行操作呢,這個(gè)時(shí)候往往就用到了對(duì)象的串行化。在JavaScript的串行化中不得不提JSON,JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。

人們通常將JSON和XML進(jìn)行比較,二者都是將對(duì)象扁平化(稍后我們解釋這個(gè)“扁平化”)的一種手段,XML的特點(diǎn)是結(jié)構(gòu)嚴(yán)謹(jǐn),而JSON的特點(diǎn)則是簡(jiǎn)單易讀、容易使用程序進(jìn)行分析,因?yàn)樗軌蚝芎?jiǎn)單的將一個(gè)對(duì)象轉(zhuǎn)換為一個(gè)字符流的形式,例如如下代碼:

代碼:

{'type':'human','name':'hanguofeng','age':22}

則是一個(gè)JSON表達(dá)式,他保存了一個(gè)對(duì)象,我們?nèi)绾螌⑺謴?fù)為對(duì)象呢?很簡(jiǎn)單,如下:

代碼:

var animal_str = '{'type':'human','name':'hanguofeng','age':22}';var animal2=eval('(' + animal_str + ')');

我們通過JavaScript的求值函數(shù),將JSON表達(dá)式進(jìn)行運(yùn)算,并返回值,用以獲得一個(gè)對(duì)象,到這里,我想你一定會(huì)和我一樣,對(duì)JSON格式的創(chuàng)造者的思維佩服不已吧。本來說講串行化的,“不小心”談到JSON,并且講了這么多,呵呵,跑題了嗎?沒有,PHP的串行化和JSON是非常像的,一個(gè)PHP的串行化表達(dá)式如下:

代碼:a:3:{s:4:'type';s:5:'human';s:4:'name';s:10:'hanguofeng';s:3:'age';s:2:'20';}他看起來結(jié)構(gòu)和JSON有些類似,實(shí)際上,這個(gè)表達(dá)式是如下數(shù)組的串行化結(jié)果:代碼:$animal =array('type' => 'human','name' => 'hanguofeng','age'=> '20');OK,上面的一些介紹只是讓你大致看到串行化和JSON是什么樣的東西,你無須對(duì)這里的代碼過分糾結(jié),我們?cè)诤竺鏁?huì)詳細(xì)講解的,下面我們來談?wù)劄槭裁匆褂么谢?/P>

Why

串行化首先是作為數(shù)據(jù)傳輸?shù)姆奖愣霈F(xiàn)的,正如本文開始我提出的問題,我在JavaScript中建立了一個(gè)對(duì)象,我現(xiàn)在想將這個(gè)對(duì)象保存到服務(wù)器端的數(shù)據(jù)庫(kù)中,應(yīng)該如何做,這其實(shí)上是一個(gè)“我如何將一個(gè)對(duì)象從瀏覽器提交到服務(wù)器”的問題,在這個(gè)傳輸過程中,我們知道,實(shí)際上只能夠傳遞字符流,字符流是一維(扁平)的,然而很多對(duì)象卻是多維的,如果要傳遞的對(duì)象是一個(gè)字符串,那么很簡(jiǎn)單,我們直接將其作為傳遞的內(nèi)容就可以了,如果要傳遞的對(duì)象是一個(gè)數(shù)組或者其他的結(jié)構(gòu)呢,我們就需要用字符流來描述他,就比如在電話里面,我問你的名字是什么,你會(huì)告訴我,你的名字是張三、李四,而我問你,你的長(zhǎng)相如何呢,你就需要用文字向我描述了,我們進(jìn)行數(shù)據(jù)傳遞的媒介往往和這條電話線路一樣,只能傳遞字符流,而我們描述對(duì)象的過程,實(shí)際上就是串行化的過程。

另外,串行化也可以用于對(duì)對(duì)象的持久化存儲(chǔ),也許你曾經(jīng)也和我一樣,想著在數(shù)據(jù)庫(kù)的某一個(gè)字段中存儲(chǔ)一個(gè)對(duì)象,現(xiàn)在我們可以非常簡(jiǎn)單的做到這一點(diǎn),并且,你的這個(gè)數(shù)據(jù)庫(kù)字段不需要設(shè)定為特殊格式,設(shè)定為 varchar就可以了(當(dāng)然,如果對(duì)象很大,你可能需要設(shè)定為text)。

How

PHP串行化語法

好了,我想What和Why的問題你都了解了,本節(jié)最后我們來講點(diǎn)理論性強(qiáng)一些的內(nèi)容,就是如何使用PHP串行化和反串行化數(shù)據(jù),如何將JavaScript對(duì)象串行化(即變?yōu)镴SON格式)和如何將其反串行化,最后則是如何將JSON和PHP的串行化建立關(guān)系。

PHP為我們提供了兩個(gè)函數(shù),用來進(jìn)行串行化和反串行化的操作,這兩個(gè)函數(shù)分別是:serialize()和unserialize(),他們適用于PHP4和PHP5,下面分別進(jìn)行講解:

serialize()

(PHP 4, PHP 5, PECL axis2:0.1.0-0.1.1)serialize — 獲得一個(gè)可存儲(chǔ)的表述值

說明

string serialize ( mixed $value )獲得一個(gè)可存儲(chǔ)的表述值本函數(shù)用于無損的存儲(chǔ)或者傳遞PHP變量值和結(jié)構(gòu)。如果需要將已經(jīng)串行化的值轉(zhuǎn)回PHP變量,可以使用unserialize()函數(shù)。

參數(shù)

value即被串行化的表達(dá)式。serialize()處理除資源指針之外的所有類型,你甚至可以將含有指向自身元素的數(shù)組串行化。你串行化的含有循環(huán)指向的數(shù)組或者對(duì)象一樣會(huì)被存儲(chǔ),其他的指向則會(huì)丟失。當(dāng)串行化對(duì)象時(shí),PHP會(huì)嘗試首先調(diào)用其成員函數(shù)__sleep()。這將允許對(duì)象在被串行化之前進(jìn)行諸如最后的清理工作等。同樣地,當(dāng)使用unserialize()函數(shù)將對(duì)象恢復(fù)時(shí),會(huì)調(diào)用成員函數(shù)__wakeup()。

返回值

返回一個(gè)可以被存儲(chǔ)在任何地點(diǎn)的包含對(duì)象的字節(jié)流表達(dá)式的字符串。

unserialize()

(PHP 4, PHP 5, PECL axis2:0.1.0-0.1.1)unserialize — 從一個(gè)已存儲(chǔ)的表達(dá)式中獲得一個(gè)PHP變量值

說明

mixed unserialize ( string $str )unserialize()獲取一個(gè)簡(jiǎn)單類型的串行化變量并將其轉(zhuǎn)換回PHP變量值。

參數(shù)

str

串行化后的字符串如果被反串行化的變量是一個(gè)對(duì)象,則成功恢復(fù)該對(duì)象的結(jié)構(gòu)后,PHP將自動(dòng)嘗試執(zhí)行該對(duì)象的__wakeup()成員函數(shù)(如果其存在)。unserialize_callback_func 指令:你可以設(shè)定在此過程中唄執(zhí)行的回調(diào)函數(shù),如果某個(gè)未被定義的類應(yīng)當(dāng)在反串行化時(shí)被實(shí)例化(以避免獲得一個(gè)不完全的對(duì)象 “__PHP_Incomplete_Class”)。你可以使用php.ini,ini_set()或者.htaccess來定義 “unserialize_callback_func”。當(dāng)一個(gè)未被定義的類被實(shí)例化時(shí),它會(huì)被調(diào)用。屏蔽這個(gè)特性只需將其設(shè)為空即可。

返回值

返回轉(zhuǎn)換后的數(shù)值,可能是布爾變量、實(shí)數(shù)、浮點(diǎn)數(shù)、字符串、數(shù)組或者對(duì)象。假如傳入的字符串不可以被反串行化,則返回FALSE,同時(shí)拋出NOTICE錯(cuò)誤。(以上譯自PHP手冊(cè))

PHP串行化實(shí)例

數(shù)組的串行化和反串行化

OK,讓我們來用實(shí)例學(xué)習(xí)一下,首先,請(qǐng)建立sample1.php文件,我們?cè)谶@個(gè)文件中用如下語句來創(chuàng)建一個(gè)哈希數(shù)組:

代碼:<?php$animal =array('type' => 'human','name' => 'hanguofeng','age'=> '20');?>為了測(cè)試這個(gè)數(shù)組的值,你可以使用print_r()函數(shù)來輸出數(shù)組,輸出的結(jié)果如下:

代碼:Array([type] => human[name] => hanguofeng[age] => 20)那么我們將他來串行化一下,串行化的代碼如下:

代碼:<?php$animal =array('type' => 'human','name' => 'hanguofeng','age'=> '20');$animal_ser=serialize($animal);echo($animal_ser);?>這里我們將數(shù)組$animal串行化,將返回的串行化字符串保存在變量$animal_ser中,并輸出,輸出的結(jié)果是:

代碼:a:3:{s:4:'type';s:5:'human';s:4:'name';s:10:'hanguofeng';s:3:'age';s:2:'20';}我們來簡(jiǎn)單對(duì)這個(gè)字符串進(jìn)行一個(gè)解析:a:3表示這是一個(gè)數(shù)組型的對(duì)象(a),他共有三個(gè)內(nèi)置的對(duì)象(3)大括號(hào)里面的部分是以逗號(hào)分割的對(duì)象表達(dá)式列表,以s:4:'type'為例,他表示一個(gè)字符串(s),長(zhǎng)度為4位(4),值為“type”,即哈希數(shù)組的第一個(gè)元素的鍵。后面的部分以此類推,我們不再贅述,你可以試試自己將各種對(duì)象串行化,看看串行化后的字符串是如何構(gòu)建的。下面來看數(shù)組的反串行化,即將我們上面生成的串行化字符串恢復(fù)為數(shù)組,代碼如下:

代碼:<?php$animal_ser='a:3:{s:4:'type';s:5:'human';s:4:'name';s:10:'hanguofeng';s:3:'age';s:2:'20';}';$animal = unserialize($animal_ser);print_r($animal);?>在第一行中,我們假設(shè)$animal_ser的值為上面獲得的串行化字符串,在第二行將該字符串恢復(fù)為開始的數(shù)組,并賦值給$animal,最后輸出$animal這個(gè)數(shù)組,此時(shí)的輸出和本節(jié)開始時(shí)輸出的原始數(shù)組是一樣的,即:

代碼:Array([type] => human[name] => hanguofeng[age] => 20)這樣我們就完成了數(shù)組的反串行化。

拓展知識(shí)—自定義對(duì)象的串行化和反串行化

對(duì)數(shù)組進(jìn)行串行化是一個(gè)基礎(chǔ)操作,然而在實(shí)際的程序設(shè)計(jì)中,我們可能經(jīng)常對(duì)其他類型的變量進(jìn)行串行化,例如對(duì)某個(gè)自定義對(duì)象進(jìn)行串行化,這里有一個(gè)我們自己編寫的類A(保存在classa.inc中):

代碼:<?phpclass A {var $one = 1;function show_one() { echo $this->one;}}?>我們?cè)谌缦麓a中創(chuàng)建類的實(shí)例并對(duì)該實(shí)例進(jìn)行串行化:

代碼:<?phpinclude('classa.inc');$a=new A;echo(serialize($a));?>此時(shí)輸出的內(nèi)容為:

代碼:O:1:'A':1:{s:3:'one';i:1;}總體來看,這個(gè)串行化字符串輸出了改對(duì)象當(dāng)前的狀態(tài),即i的值為1。下面我們來逐個(gè)分析其中的細(xì)節(jié)。O:1:由于當(dāng)前的變量是一個(gè)自定義對(duì)象,因此該表征字符為“O”,表示Object。后面的'A'標(biāo)識(shí)了該變量是哪個(gè)類的實(shí)例,這里即A類。大括號(hào)內(nèi)即該實(shí)例的各個(gè)屬性的名稱和值。而后我們將其進(jìn)行反串行化:

代碼:<?phpinclude('classa.inc');$s = 'O:1:'A':1:{s:3:'one';i:1;}';$a = unserialize($s);$a->show_one();?>此時(shí)輸出“1”,即調(diào)用了A類的show_one()方法。你可以注意到雖然在實(shí)例的串行化字符串中并沒有包含類的方法,但是我們將其反串行化后,仍然可以調(diào)用類的方法,這個(gè)特性在PHP4及以上版本中被支持(當(dāng)然,你需要包含類的定義文件classa.inc)。

注:你可以參考PHP手冊(cè)中Language Reference->Classes and Objects->Serializing objects - objects in sessions一節(jié)的內(nèi)容。

在JavaScript中串行化為JSON—使用json2.js

JavaScript中沒有直接串行化對(duì)象的內(nèi)置方法,當(dāng)然你可以自己寫一個(gè),不過我還是強(qiáng)烈推薦你在這里偷個(gè)小懶,使用現(xiàn)成的組件,JSON的官方網(wǎng)站www.json.org提供了對(duì)JavaScript對(duì)象實(shí)現(xiàn)JSON串行化的代碼庫(kù)—json2.js,你可以從這里獲得它。

獲得完畢json2.js文件后,你可以打開這個(gè)文件,在文件的前部分包含了相當(dāng)大量的注釋信息,如果你的英文足夠好,那么你可以省略我這一節(jié),參考該文件的注釋就可以了,如果作為程序員,你已經(jīng)看夠了大片的字母,想看看我的漢字+字母,那你可以向下繼續(xù)了。

簡(jiǎn)單的翻譯下這個(gè)注釋:可參考http://www.JSON.org/js.html該文件創(chuàng)建了一個(gè)包含兩個(gè)方法的全局對(duì)象JSON,它的方法分別是:

代碼:JSON.stringify(value, whitelist)value;任意的JavaScript值,一般是一個(gè)對(duì)象或者數(shù)組whitelist;一個(gè)可選的數(shù)組參數(shù),用于判定對(duì)象值如何被串行化這個(gè)方法通過一個(gè)JavaScript值來生成JSON文本。在進(jìn)行串行化時(shí),根據(jù)可選的參數(shù)whitelist,有三種可能:如果某個(gè)對(duì)象有toJSON方法,那么則調(diào)用該方法,toJSON方法的返回值將被串行化。否則,如果可選參數(shù)whitelist是一個(gè)數(shù)組,那么數(shù)組中的元素將被用來選擇對(duì)象進(jìn)行串行化時(shí)的的成員。否則,如果沒有使用whitelist參數(shù),則對(duì)象的所有成員將被串行化。如果值沒有JSON的表現(xiàn)形式,例如undefined或者函數(shù),則其不會(huì)被串行化。在對(duì)象中,這樣的值會(huì)被忽略,而在數(shù)組中將會(huì)被null替換。JSON.stringify(undefined)會(huì)返回undefined。日期將會(huì)被串行化為被引用的ISO日期。例:

代碼:var text = JSON.stringify(['e', {pluribus: 'unum'}]);//text is '['e',{'pluribus':'unum'}]'JSON.parse(text, filter)該方法解析一個(gè)JSON文本,并生成一個(gè)組件或者數(shù)組,其可能拋出一個(gè)SyntaxError異常。可選的filter參數(shù)是一個(gè)可過濾和轉(zhuǎn)換結(jié)果的函數(shù)、它接受每個(gè)鍵和值,它的返回值用來替換源值。如果它返回所接收的值,那么結(jié)果不會(huì)被改變。如果他返回undefined,則該成員會(huì)被刪除。例:

代碼://解析文本,如果某個(gè)鍵包含字符串“date”,則將其值轉(zhuǎn)換為日期myData = JSON.parse(text, function (key, value) {return key.indexOf('date') >= 0 ? new Date(value) : value;});上面的入門教程已經(jīng)使你基本了解了json2.js的使用方法,這里關(guān)于該文件我就不再贅述了,只是有一個(gè)小提示,如果你想簡(jiǎn)單的解析一個(gè)JSON文本,那么可以使用eval()函數(shù),改函數(shù)是JavaScript的內(nèi)置函數(shù),例如解析在JSON.stringify的案例中生成的JSON文本,可以使用:

代碼:var myE = eval('['e',{'pluribus':'unum'}]');來獲得對(duì)象myE。

在JavaScript中串行化為JSON—使用prototype.js

如果你和我一樣,喜歡在自己的項(xiàng)目中使用開源的JavaScript框架,那么你可能可以省去使用json2.js文件了,這里以protype.js為例,該文件可以在http://www.prototypejs.org下載,由于本文不是在講JavaScript框架,這里我假設(shè)你對(duì)prototype.js的使用已經(jīng)有所了解了。prototype.js中提供了對(duì)Object對(duì)象的toJSON方法,你可以使用Object.toJSON()方法來實(shí)現(xiàn)對(duì)對(duì)象的串行化,例如:

代碼:var cat={name:'hellokitty',height:'6 apples'}alert(Object.toJSON(cat));//將彈出對(duì)話框,內(nèi)容為 {'name': 'hellokitty', 'height': '6 apples'}另外,在prototype.js中還有另外的JSON支持,主要是在Ajax對(duì)象中對(duì)Ajax返回請(qǐng)求中JSON內(nèi)容的解析。這里暫時(shí)與我們的內(nèi)容無關(guān),也不再介紹了。

PHP與JSON

在上面我們一起了解了PHP進(jìn)行對(duì)象串行化的方法以及在JavaScript中進(jìn)行將對(duì)象串行化為JSON的方法,你大致會(huì)質(zhì)疑我為什么將二者放在一起,因?yàn)樗麄兊恼Z法實(shí)際是不完全一樣的,然而,在PHP中,可以對(duì)JSON文本進(jìn)行反串行化,也可以將PHP的對(duì)象串行化為JSON而非PHP風(fēng)格的文本。這主要是靠json_decode和json_encode兩個(gè)函數(shù)來完成的,需要特別說明的是,這兩個(gè)函數(shù)在PHP 5 >= 5.2.0中才被支持,如果你要編寫運(yùn)行在PHP4環(huán)境下的程序,那么這兩個(gè)函數(shù)是不可以使用的。

json_decode函數(shù)

語法

mixed json_decode ( string $json [, bool $assoc] )獲取一個(gè)JSON編碼文本,并且將其轉(zhuǎn)換為PHP變量

參數(shù)

json被JSON編碼的文本assoc當(dāng)為TRUE時(shí),返回的值為聯(lián)合數(shù)組

返回值

返回一個(gè)對(duì)象,或者如果可選的assoc參數(shù)為TRUE,則一個(gè)聯(lián)合數(shù)組將會(huì)被返回

json_encode函數(shù)

語法

string json_encode ( mixed $value )該函數(shù)返回一個(gè)值的JSON表達(dá)式

參數(shù)

value要被編碼的值,可以為除resource外的任何類型參數(shù)這個(gè)函數(shù)僅在UTF-8編碼格式時(shí)起作用

返回值

當(dāng)成功時(shí)返回編碼后的JSON文本

json_decode函數(shù)實(shí)例

下面兩個(gè)例子都基于我們的一個(gè)情景假設(shè),即,我們有一個(gè)用戶注冊(cè)的模塊,這個(gè)模塊以“面向?qū)ο蟆钡姆绞焦ぷ鳎趈son_decode函數(shù)實(shí)例中,我們?cè)谇芭_(tái)將用戶的注冊(cè)信息變?yōu)橐粋€(gè)類的屬性,而后傳遞到后臺(tái)的php文件(這里為了簡(jiǎn)便,就不用Ajax了)。在json_encode實(shí)例中,我們?cè)趆tml文件中引用一個(gè)js 文件,地址指向php文件,在php文件中輸出json編碼后的用戶對(duì)象(同樣為了簡(jiǎn)便,我們直接生成一個(gè)對(duì)象而不從數(shù)據(jù)庫(kù)中取信息),并在html中輸出。好了,先來看前臺(tái)的頁面json_encode.htm,這個(gè)頁面模仿了通常的注冊(cè)頁面,在其上面有一個(gè)表單,當(dāng)提交時(shí),觸發(fā) JavaScript函數(shù),生成一個(gè)用戶對(duì)象user,將表單內(nèi)容設(shè)為用戶對(duì)象的屬性,生成JSON文本,以POST方式傳遞到后臺(tái)的 json_encode.php文件。在js_encode.php文件中,將JSON文本用json_decode函數(shù)解析為PHP對(duì)象,并輸出。好了,先來看json_encode.html文件,文件代碼如下:

代碼:<!DOCTYPE html PUBLIC '//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><title>json_decode</title><script src='http://www.gepszalag.com/bcjs/json2.js' type='text/javascript'></script><script type='text/javascript'>function JSON_test(o){var user = { name:document.getElementById('txt_name').value, email:document.getElementById('txt_email').value, password:document.getElementById('txt_name').value}var json_string = JSON.stringify(user);

document.getElementById('txt_json').value=json_string;alert('點(diǎn)擊確定后將提交表單');o.submit();}</script></head><body><form name='form1' method='post' action='json_encode.php' onsubmit='JSON_test(this)'> <label for='txt_name'>姓名</label> <p><input type='text' name='txt_name' /> </p> <label for='txt_email'>郵箱</label> <p><input type='text' name='txt_email' /> </p> <p><label for='txt_password'>密碼</label> </p> <p><input type='text' name='txt_password' /> </p> <p> <input type='text' name='txt_json' /><label for='button'></label><input type='submit' name='button' value='JSON' /> </p></form></body></html>當(dāng)提交表單時(shí),將觸發(fā)JavaScript函數(shù)JSON_text(),該函數(shù)首先建立一個(gè)JavaScript對(duì)象user,將其name、email 和password屬性分別設(shè)為對(duì)應(yīng)表單的值,而后使用json2.js文件的JSON.stringify方法將其轉(zhuǎn)換為JSON文本 json_string,最后設(shè)定隱藏域(這里為了使你看的清楚,我把這個(gè)隱藏域以文本框形式顯示了)txt_json的值為json_string,并提交表單。下面到j(luò)son_encode.php文件,如下:

代碼:<?php$json_string = $_POST['txt_json'];if(ini_get('magic_quotes_gpc')=='1'){$json_string=stripslashes($json_string);}$user = json_decode($json_string);echo var_dump($user);?>在這個(gè)文件中,首先得到j(luò)son_encode.html文件中POST表單域txt_json的值,放入變量$json_string中,而后判斷,如果當(dāng)前PHP的設(shè)定為magic_quotes_gpc=On,即傳入的雙引號(hào)等會(huì)被轉(zhuǎn)義,這樣json_decode函數(shù)無法解析,因此我們要將其反轉(zhuǎn)義化。而后,使用json_decode函數(shù)將JSON文本轉(zhuǎn)換為對(duì)象,保存在$user變量中,最終用echo var_dump($user);,將該對(duì)象dump輸出出來,最終結(jié)果是:

代碼:object(stdClass)#1 (3) { ['name']=> string(10) 'hanguofeng' ['email']=> string(18) 'example@domain.com' ['password']=> string(10) 'hanguofeng'}json_encode函數(shù)實(shí)例

在這個(gè)例子中,仍然是由兩部分構(gòu)成的,即json_enode.html和json_encode.php。在json_decode.html文件中,基本與 json_decode.html文件的表單類似,但是不同的是,這次我們要從json_encode.php文件中獲得相應(yīng)用戶的JSON文本,先來看這個(gè)PHP文件吧:

代碼:<?phpClass user{public $name='';public $email='';public $password='';};$myUser = new user;$myUser->name='hanguofeng';$myUser->email='example@domain.com';$myUser->password='hanguofeng';$json_string = json_encode($myUser);?>var user = <?php echo($json_string)?>;這個(gè)文件首先建立類user,而后獲得一個(gè)user類的實(shí)例myUser,并設(shè)定其用戶名、郵箱和密碼,接下來使用json_encode函數(shù)將其轉(zhuǎn)換為 JSON文本,保存在變量$json_string中,最后輸出一段JavaScript代碼,以在JavaScript中建立全局變量user。接下,我們需要在json_encode.html文件中引入json_encode.php文件,并得到user對(duì)象的各個(gè)屬性,如下:

代碼:<!DOCTYPE html PUBLIC '//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><title>json_encode</title><script src='http://www.gepszalag.com/bcjs/json_encode.php' type='text/javascript'></script></head><body><form name='form1' method='post'> <label for='txt_name'>姓名</label> <p><input type='text' name='txt_name' /> </p> <label for='txt_email'>郵箱</label> <p><input type='text' name='txt_email' /> </p> <p><label for='txt_password'>密碼</label> </p> <p><input type='text' name='txt_password' /> </p></form><script type='text/javascript' >document.getElementById('txt_name').value=user.name;document.getElementById('txt_email').value=user.email;document.getElementById('txt_password').value=user.password;</script></body></html>在這個(gè)文件中,你需要注意兩點(diǎn),第一是,我們以這樣的代碼引入json_encode.php文件為JavaScript文件:

代碼:<script src='http://www.gepszalag.com/bcjs/json_encode.php' type='text/javascript'></script>第二點(diǎn)則是:我們?cè)谖谋究虼a后面加入JavaScript的代碼,對(duì)文本框的value屬性進(jìn)行操作,分別設(shè)定其值為user對(duì)象的相應(yīng)值。

標(biāo)簽: PHP
主站蜘蛛池模板: 欧美九九 | 毛片网页| 欧美色性 | 91精品国产乱码久久久久久 | 欧美精品一区二 | 欧美一级在线 | www.888www看片 | 自拍视频网站 | 国产毛片aaa | 久久精品一级 | aaaaaa毛片 | 久久久精品网 | 亚洲国产成人av好男人在线观看 | 日韩一区二区不卡 | 黄色免费一级 | 国产精品视频一二 | 玖玖成人 | 成人小视频在线观看 | 伊人久久艹 | 久草中文在线 | 欧美日韩精品一区二区三区四区 | 精品一区二区久久久久久久网站 | 精品国产乱码一区二区三区四区 | 国产精品久久久久久妇女6080 | 男女免费在线观看 | 久热精品国产 | 蜜桃视频在线观看www社区 | 国产97色在线 | 亚洲 | 午夜免费看片 | 在线视频一区二区 | 奇米一区二区 | 成人av播放| 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 久久黄色| 色视频网站在线观看一=区 日韩一二三区 | 午夜免费福利在线 | 国产精品一区av | 中文字幕在线观看不卡视频 | 成人精品视频99在线观看免费 | 夜夜夜操操操 | 美女视频黄色免费 | 日本久久精品电影 | 欧美精品一区二区三区在线播放 | 亚洲精品乱码久久久久久蜜桃图片 | 激情六月综合 | 亚洲视频自拍 | 国产精品片aa在线观看 | 国产拍揄自揄精品视频麻豆 | 91一区二区| 黄色一级毛片 | 国产精品99久久久久久久vr | 欧美黄色一区 | 欧美日韩精品久久久久 | 日韩午夜一级片 | 精品国产福利 | 精品国产不卡一区二区三区 | 精品视频在线观看 | 久草 在线 | 日韩精品 电影一区 亚洲 | 成人毛片在线视频 | 欧美精品一区二区三区四区 | 久久精品麻豆 | 国产精品成av人在线视午夜片 | 成人a在线 | 国产视频精品在线 | 久久久精品久久久 | 日韩一区二区三区四区五区 | 欧美高清视频一区二区三区 | 黄的视频网站 | 亚洲一区二区三区免费观看 | 在线看av网址 | 精品99在线 | 中文字幕亚洲一区 | 亚洲首页 | 一区二区三区免费网站 | 国产欧美视频在线 | 91一区二区| 中文字幕亚洲一区二区三区 | 精品欧美乱码久久久久久1区2区 | 成人三级在线 | 一区二区三区四区在线播放 | 日韩精品 电影一区 亚洲 | 99精品久久久 | 成人一级片 | 99亚洲精品| 亚洲一区二区免费在线观看 | 久久久久久国产精品美女 | 久精品在线| 羞羞视频免费观 | 亚洲高清视频在线 | 久久1区 | 亚洲综合在线播放 | 久久精美视频 | 91久久久久久久 | 国产精品主播 | 国产高清精品在线 | 国产日韩欧美一二三区 | 日韩极品视频 | 国产一区免费 | 国产精品精品视频一区二区三区 | 亚洲精品视频在线看 | 亚洲欧洲日韩在线 | 午夜无码国产理论在线 | 精品亚洲自拍 | 欧美肉体xxxx肉交高潮 | 久热免费在线 | 亚洲精品一区中文字幕乱码 | 日韩在线免费视频 | 99热影院| 色综合久久天天综合网 | 91亚洲高清 | 天天干人人 | 精品视频久久 | 久久久999精品视频 欧美老妇交乱视频 | 中文av字幕 | 免费在线观看毛片网站 | 国产成人午夜精品影院游乐网 | 国产欧美综合一区二区三区 | 久久国产成人午夜av影院宅 | 国产午夜视频在线观看 | a黄视频 | 成人精品国产一区二区4080 | porn在线| 国产一区二区三区在线视频 | 九色国产| 精品亚洲自拍 | 国产亚洲精品久久久久久久 | 亚洲一区二区三区福利 | 夫妻午夜影院 | 久久久精品一区 | 久久久性色精品国产免费观看 | 亚洲视频一区二区 | 高清视频一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 男女激情网址 | 日本电影网址 | 午夜精品在线 | 久久99精品国产自在现线 | 男女羞羞视频在线观看 | 日韩成人一区二区 | 国产综合视频在线播放 | 欧美日产国产成人免费图片 | 免费成人在线网站 | 精品久久久久久久 | 亚洲一区二区三区免费在线观看 | 国产视频福利一区 | 美女视频一区二区三区 | 91天堂| 欧美一级片在线观看 | 日本在线观看视频网站 | 久久久久网站 | 一区二区在线视频 | 成人亚洲在线观看 | 中文一区 | 日韩精品免费在线观看 | 国产伊人一区 | 欧美电影一区二区三区 | 亚洲福利国产 | 黄色大片网站 | 天天躁日日躁aaaaxxxx | 老黄网站在线观看 | 国厂黄色片 | 亚洲一区二区三区免费在线 | 日韩视频在线观看视频 | 国产精品a免费一区久久电影 | 五月天婷婷激情视频 | 亚色在线| 免费看a | 国产成人精品久久 | 日韩亚洲视频在线观看 | 黄色福利| 欧美大片在线看免费观看 | 天天爱天天操 | 欧美日韩国产一区二区三区在线观看 | 美女天堂 | 午夜在线小视频 | 国产精品18hdxxxⅹ在线 | 国产亚洲欧美一区二区 | 91电影在线观看 | 一二三区av | 欧美成人精品一区二区三区在线看 | 久久久久久综合 | 91尤物网站网红尤物福利 | 亚洲一区中文字幕在线观看 | 亚洲午夜精品在线观看 | 亚洲综合在线一区 | 亚洲国产精品一区 | 国产精品香蕉 | 久久综合99re88久久爱 | 久久久久久久久国产 | 亚洲欧美综合一区 | 久久久精品 | 国产一区二区精品在线 | 亚洲女人的天堂 | 精品在线一区 | 亚洲视频免费 | 精品免费视频 | 天堂视频中文字幕 | 国产性一级片 | 欧美日韩成人激情 | 久久久久综合狠狠综合日本高清 | 天天舔天天干天天操 | 免费一区二区 | 亚洲精品区 | 欧美国产视频 | 欧美日韩精品一区二区三区在线观看 | 偷派自拍| 亚洲成人久久久 | 女人高潮特级毛片 | 91精品国产高清久久久久久久久 | 91色乱码一区二区三区 | 久久久久一区二区三区 | 欧美午夜一区二区三区免费大片 | 成人在线视频免费观看 | 欧美日韩国产精品一区二区 | 91中文字幕在线观看 | 欧美天堂在线观看 | 欧美激情精品久久久久久 | 伊人精品在线 | 亚洲成人伊人 | 色婷婷一二三 | 2022天天操| 日韩中文字幕a | 在线免费中文字幕 | 成人免费看黄色 | 国产一区二区三区在线 | 久久久精品一区二区 | 麻豆国产免费 | 成人精品在线视频 | 亚洲精品一区在线观看 | 国产精品久久久久久久午夜 | 国产高清视频在线 | 国产区视频在线 | 资源av| 一区在线视频 | 夜夜艹| 99久久久无码国产精品 | 777色狠狠一区二区三区 | 欧美精品成人一区二区三区四区 | 国产a久久精品一区二区三区 | 一区二区免费在线 | 久久美女| 亚洲理论电影在线观看 | 国产激情午夜 | 久久一区二区视频 | 日韩欧美中文字幕在线视频 | 久久这| 亚洲欧美一区二区三区在线 | 欧美性福 | 久久9999| 亚洲视频一区二区 | 久草视频在线播放 | 亚洲成人天堂 | 久久久久久国产免费 | 亚洲生活片 | 亚洲国产精品一区 | 免费的av网站 | 天天操天天干天天爽 | av福利在线观看 | 日韩免费视频 | 国产高清第一页 | 欧美日韩黄色一区二区 | www.国产一区 | 九色91九色porny永久 | 久久久资源| 91av视频在线 | 中文字幕在线资源 | 免费99精品国产自在在线 | 91免费在线 | 欧美日韩国产在线看 | 欧美美乳| 精品一区二区久久久久久久网站 | 天天干天天插 | 欧美一区二区三区在线 | 亚洲欧美第一页 | 伊人网在线视频 | 欧美激情精品久久久久久免费 | 久久久精品 | 视频成人免费 | 成人午夜影院 | 欧美激情 在线 | 久草网站| 亚洲午夜精品一区二区三区他趣 | 日韩资源 | 日韩第一区 | 黄色网址大全在线观看 | 一级黄色片看看 | 国产中文字幕在线观看 | 亚洲综合视频 | 亚洲欧美一区二区三区不卡 | 狠狠综合久久av一区二区小说 | 国产精品一区二区在线观看 | 国产福利精品一区 | 国产一区二区三区免费 | 久久精品国产久精国产 | 视频二区 | 婷婷免费在线观看 | 免费观看成人毛片 | 国产人成精品一区二区三 | 国产成人精品一区二区视频免费 | 精品无人乱码一区二区三区的优势 | 国产一级网站 | 国产亚洲精品精品国产亚洲综合 | 99爱免费观看 | 高清一区二区三区 | 亚洲国产精品99久久久久久久久 | 国产免费一区二区三区 | 日本午夜影院 | 黄色欧美一级片 | 午夜精品网站 | 欧美一区二区三区爽大粗免费 | 久久精品国产精品 | 99热欧美 | 91av免费在线观看 | 中文字幕一区二区三区免费视频 | 91色视频在线观看 | 国产偷录视频叫床高潮对白 | 老司机深夜福利在线观看 | av在线免费播放 | 91视频免费网站 | 国产欧美日韩综合精品一区二区 | 91精品国产综合久久久亚洲 | 伦理一区 | 久久女人精品 | 免费的黄色网 | 四虎视频 | 99久久国产综合精品女不卡 | 国产在线一区二区三区 | 欧美精品成人一区二区在线 | 欧美国产一区二区 | 亚洲一区二区 | 亚洲精品久久久久久久久久久 | 久久久国产一区二区 | 亚洲国产日韩a在线播放性色 | 中国大陆高清aⅴ毛片 | 欧美一级毛片久久99精品蜜桃 | 国产综合精品一区二区三区 | 国产精品99| 久久精品视频一区 | 99精品久久久久久久免费 | 欧美精品三区 | 国产日韩欧美精品一区二区 | 亚洲欧美日本在线 | 国产人久久人人人人爽 | 亚洲免费一区 | av中文字幕第一页 | japan国产精选videos | 国产成人一区二区三区 | 国产在线一区二区三区 | 国产午夜精品久久久久久久 | 国产精品久久久久久婷婷天堂 | 欧美激情一区二区三区在线观看 | 美女黄在线观看 | 国产精品久久久久久吹潮 | 特黄视频 | 精品久久一区 | 一区在线看 | 91精品国产欧美一区二区 | 亚洲综合视频 | 成人激情视频在线免费观看 | 99精品在线 | 欧美午夜影院 | 国产欧美一区二区精品忘忧草 | 人妖天堂狠狠ts人妖天堂狠狠 | 亚洲 自拍 另类 欧美 丝袜 | 久久亚洲免费 | www.日韩三级| 欧美日韩国产精品一区二区 | 欧美一级高潮片免费的 | 美女高潮久久久 | 亚洲美女av在线 | 国产一级一级国产 | 正在播放国产精品 | 日本中文字幕在线播放 | 香蕉二区| 一级黄色毛片子 | 色接久久| 成人精品久久久 | 亚洲精品中文字幕 | 日韩中文一区二区三区 | 日本免费xxxx | 国产成人精品网站 | 亚洲夜幕久久日韩精品一区 | 婷婷国产精品 | 亚洲一级一片 | 成人午夜影院 | 亚洲国产成人精品女人久久久 | 男女羞羞网站 | 日韩av视屏 | 国产精品久久久久久久久久久久久久 | 久久久久久久久久影院 | 黑人精品xxx一区一二区 | 久章操 | 久久国产精品免费一区二区三区 | 日韩一级黄色大片 | 99国产精品 | 成年人在线视频 | 欧美理论片在线 | 欧美福利电影在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 免费a大片 | av网址在线播放 | 中文字幕av亚洲精品一部二部 | 希岛爱理在线 | 青青草免费在线视频 | 天天操夜夜操免费视频 | 欧美日韩在线视频免费 | 国产猛男猛女超爽免费视频网站 | 最新免费av网站 | 亚洲精品免费观看 | 日本黄色毛片 | 999精品视频 | 国产精品亚洲成人 | 亚洲情网站 | 一区二区三区欧美在线 | 亚洲精品高清视频 | 国产欧美在线观看 | 日本在线免费 | 日韩手机在线观看 | 亚洲码欧美码一区二区三区 | 一区二区国产精品 | 日韩一区高清视频 | 欧美激情首页 | 成人免费在线电影 | 久久综合九色综合欧美狠狠 | 91精品国产美女在线观看 | 一级免费毛片 | www.国产| 在线观看三区 | 91久久| 2019中文字幕在线观看 | aaa天堂 | 日韩在线色 | 欧美伦理一区二区三区 | 日韩一区在线视频 | aaa天堂| 久久亚洲精品国产一区 | 一区二区三区高清不卡 | 一级一级黄色片 | 欧美日韩电影一区 | 国内精品在线视频 | 在线a电影| 久久国产精品99久久久久久牛牛 | 在线播放国产一区二区三区 | 草樱av| 日韩avav| 在线观看91精品国产入口 | 久久精品2 | 国内精品视频 | 五月婷婷丁香 | 亚洲精品aaa| 毛片在线视频 | 亚洲人成在线观看 | 日韩精品免费观看 | 久久涩 | 国产大学生一区 | 欧美黄色片 | 欧美成人影院在线 | 天天干天天操 | 欧美日本亚洲 | 不卡av电影在线观看 | 91久久久久久 | 国产视频久久久久久久 | 91视频入口 | 亚洲www视频| 亚洲一区二区国产 | 中文字幕在线观看www | 日韩中出| 国产1区在线观看 | 国内精品一区二区 | 波多野结衣一区二 | 韩国精品一区二区 | 成人黄色片网站 | 日日摸天天做天天添天天欢 | 色优久久 | 欧美成年黄网站色视频 | 一区二区三区国产在线 | 欧美日韩国产在线观看 | 国产免费一区二区三区 | 欧美日韩亚洲视频 | av最新在线| 久久9久久 | 国产成人av免费 | 欧美狠狠操| 成人一区二区三区 | 国产一级毛片电影 | 视频在线一区二区 | 一区免费看 | 精品国产乱码久久久久久88av | 日韩成人精品 | 一本岛在线视频 | 成年人免费看 | 国产精品一区欧美 | 在线91 | 精国产品一区二区三区 | 天天操天天干天天爽 | 国产乱肥老妇国产一区二 | 中文字幕亚洲精品 | 日韩欧美在线视频播放 | 中文字幕av一区二区 | a一级片在线观看 | 色综合久久久 | 91九色porny首页最多播放 | 欧美精品成人一区二区三区四区 | 日韩精品成人 | 久久99精品久久久久久园产越南 | 国产午夜视频 | 中文字幕在线观看 | 91视频入口 | 一级黄色国产 | 黄色小视频在线免费观看 | 黄网免费 | 色婷婷一区二区三区四区 | 天天摸天天干 | 免费在线视频精品 | 91亚洲高清 | 久久a国产 | 日韩精品一区二区三区中文字幕 | 国产精品一区二区三区免费视频 | 免费看的黄网站 | 国产精品99久久免费观看 | 国产精品久久久久久久久久久久久 | 天天爽视频 | 久久99精品久久久久久琪琪 | 精品久久97| 美女久久久 | 81精品国产乱码久久久久久 | 久久久99日产 | 中文字幕日韩欧美一区二区三区 | 一级a毛片 | 成人精品视频在线观看 | 国产精品视频导航 | 国产精品久久久久久久久晋中 | 国产精品毛片一区二区在线看 | 亚洲综合视频 | 亚洲国产在 | 日本在线视频观看 | 久久精品视频网 | 美女视频一区二区三区 | 国产精品一区二区三区免费 | 久久久精彩视频 | 国产一级特黄aaa大片 | 亚洲精品乱码久久久久久金桔影视 | 黄色国产一级片 | 亚洲激情视频 | 黄色av网站免费 | 日本成片视频 | 亚洲成人av一区二区三区 | 成人福利在线 | 麻豆av一区| a∨色狠狠一区二区三区 | 欧美涩涩网站 | av一区二区三区四区 | 久久手机在线视频 | 日本在线免费 | 在线欧美成人 | 国产一区精品视频 | 中文字幕在线免费看 | 中文字幕久久精品 | 伊人操操 | 精品久久国产 | 嫩草影院懂你的 | 国产成人看片 | 天天操天天拍 | 久久精品国产99国产精品 | 国产精品久久久久9999鸭 | 波多野结衣 一区二区 | 国产视频久久久 | 久久在线视频 | 日韩在线亚洲 | 国产精品久久久久久久久晋中 | 亚洲九九| 男人的天堂久久 | 精品一区视频 | 亚洲xx站| 久久久久久亚洲一区二区三区蜜臀 | 国产精品久久久久久久久免费桃花 | 日本一二三区视频 | 日韩www| 毛片免费在线观看 | 久久久久久久久久一区二区 | 日韩一二三四 | 一区二区在线 | 成人免费看片 | 亚洲精品视频网 | 午夜免费| 精品国产1区2区3区 在线国产视频 | 国产精品乱码一区二区三区 | 一区二区在线视频 | www.久久久 | 欧美一级特黄aaaaaaa视频片 | 国产精品久久久久久久久免费高清 | 欧美激情一区二区 | 奇米影视7777 | 男人的天堂视频 | 天堂亚洲 | 一区二区三区 在线 | 91亚洲国产精品 | 欧美黄视频在线观看 | 日本精品网站 | 国产艹| 亚洲美女网址 | 亚洲精品一区二区三区蜜桃下载 | 久久久天堂国产精品女人 | 色性网 | 精品免费国产一区二区三区四区 | 91麻豆精品国产91久久久久久 | 久精品视频| 成人在线小视频 | 久久国产精品电影 | 亚洲免费网站 | 91福利在线播放 | 中文字幕免费看 | 一区二区在线视频 | 久久只有精品 |