亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

php 中序列化和json使用介紹

2019-11-20 22:33:04
字體:
來源:轉載
供稿:網友

【序列化的概念】

序列化是將對象狀態轉換為可保持或可傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。

將對象的狀態信息轉換為可以存儲或傳輸的窗體的過程。 在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。

通常,對象實例的所有字段都會被序列化,這意味著數據會被表示為實例的序列化數據。這樣,能夠解釋該格式的代碼有可能能夠確定這些數據的值,而不依賴于該成員的可訪問性。類似地,反序列化從序列化的表示形式中提取數據,并直接設置對象狀態,這也與可訪問性規則無關。 對于任何可能包含重要的安全性數據的對象,如果可能,應該使該對象不可序列化。如果它必須為可序列化的,請嘗試生成特定字段來保存不可序列化的重要數據。如果無法實現這一點,則應注意該數據會被公開給任何擁有序列化權限的代碼,并確保不讓任何惡意代碼獲得該權限。

【JSON的概念】

JSON,JavaScript Object Notation,一種更輕、更友好的用于接口(AJAX、REST等)數據交換的格式。 JSON是結構化數據串行化的文本格式,作為XML的一種替代品,用于表示客戶端與服務器間數據交換有效負載的格式。它是從ECMAScript語言標準衍生而來的。JSON的設計目標是使它成為小的、輕便的、文本的,而且是JavaScript的一個子集。

【長度的比較】

如下一段代碼,顯示了對數組和對象編碼后生成的字符串及其長度

復制代碼 代碼如下:

class Foo {

    public $int = 1;
    public $bool = TRUE;
    public $array = array(array(1), 2 => 'test', 'string');

    public function test($flag) {
        echo $flag, 'test function for Foo <br />';
    }

    public static function output($str) {
        echo $str, '<br />';
    }

    public static function compare_serialize_and_json($data) {
        $serialize_str =  serialize($data);
        self::output('序列化后的值:' . $serialize_str . "; length=" .
            strlen($serialize_str));

        $json_str = json_encode($data);
        self::output('JSON后的值:' . $json_str . "; length=" . strlen($json_str));
    }

}

$test_data = array('wwww' => 0, 'phppan' => 1, 'com' => 2);
//序列化數組

echo '數組:<br />';
Foo::compare_serialize_and_json($test_data);

$foo = new Foo();
echo '對象:<br />';
Foo::compare_serialize_and_json($foo);

輸出:

復制代碼 代碼如下:

數組:
序列化后的值:a:3:{s:4:"wwww";i:0;s:6:"phppan";i:1;s:3:"com";i:2;}; length=52
JSON后的值:{"wwww":0,"phppan":1,"com":2}; length=29
對象:
序列化后的值:O:3:"Foo":3:{s:3:"int";i:1;s:4:"bool";b:1;s:5:"array";a:3:{i:0;
    a:1:{i:0;i:1;}i:2;s:4:"test";i:3;s:6:"string";}}; length=111
JSON后的值:{"int":1,"bool":true,"array":{"0":[1],"2":"test","3":"string"}}; length=63

很明顯的長度區別,serialize在編碼后大概是json的兩倍。

原因:

•serialize后字符串包含了子串的長度,這可能是速度方面的優化,典型的空間換時間,但是它本身還是太重了。
•serialize有更加詳細的類型區分,而json只有四種類型,并且是以簡單的符號表示。

【速度的比較】

以代碼說明問題,如下比較速度的代碼:

復制代碼 代碼如下:

$max_index = 10;
ini_set("memory_limit","512M");
$array = array_fill(0, 1000000, rand(1, 9999));

echo 'serialize:<br />';
$start = xdebug_time_index();
for ($i = 0;  $i < $max_index; $i++) {
    $str = serialize($array);
}
$end = xdebug_time_index();
echo $end - $start, '<br />';

echo 'json:<br />';
$start = xdebug_time_index();
for ($i = 0;  $i < $max_index; $i++) {
    $str = json_encode($array);
}
$end = xdebug_time_index();
echo $end - $start, '<br />';
unset($array, $str);

輸出:

復制代碼 代碼如下:

serialize:
9.5371007919312
json:
1.4313209056854

serialize的速度在大數據量的情況下比json差了快一個數量級。

從上面兩點看,json不管是在速度還是在生成的字符串的大小上都比serialize要好,那為什么serialize還要存在呢? 原因在下面這個點:實現的功能。

【處理對象】

如下代碼:

復制代碼 代碼如下:

header("Content-type:text/html;charset=utf8");
class Foo {
     public function test($flag) {
        echo $flag, 'test function for Foo <br />';
    }
}

$foo = new Foo();

echo '反序列化測試:<br />';
$foo->test(1);
$serialize_str = serialize($foo);
$obj = unserialize($serialize_str);
$obj->test(2);

$foo->test(1);
$json_str = json_encode($foo);
$obj = json_decode($json_str);
$obj->test(2);
die();

輸出:

復制代碼 代碼如下:

反序列化測試:
1test function for Foo
2test function for Foo
1test function for Foo

( ! ) Fatal error: Call to undefined method stdClass::test()

json無法處理對象方法等數據。

【使用范圍】

•序列化使用serialize,特別是對象的存儲。這是其存在的意義。
•與對象無關的數據存儲可以使用json,如包含大量數字的數組等。只是當遇到這種情況,我們需要做的可能是重構數據庫了。
•數據交換時使用JSON,這也是其定義所在。
•目前JSON是能用于UTF-8編碼的數據。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线看视频国产欧美| 黄色91在线观看| 中文日韩在线观看| 国内精品400部情侣激情| 丁香五六月婷婷久久激情| 中文在线资源观看视频网站免费不卡| 亚洲午夜久久久影院| 91av视频在线观看| 91福利视频网| 欧美午夜女人视频在线| 日韩中文字幕在线看| 国产精品久久久91| 国产suv精品一区二区三区88区| 国产欧美精品一区二区三区-老狼| 精品久久久一区二区| 91久久在线播放| 欧美性xxxxxxx| 国产91色在线播放| 欧美激情一区二区三区成人| 亚洲成人av在线| 亚洲综合视频1区| 欧美极品xxxx| 精品国产一区久久久| 青青在线视频一区二区三区| 国语自产精品视频在线看| 精品国产1区2区| 亚洲第一级黄色片| 日韩精品视频免费| 91精品国产91久久久久久久久| 国产成人精品视频在线观看| 国产男人精品视频| 日韩大陆欧美高清视频区| 国产精品成人国产乱一区| www.亚洲天堂| 国产精品第8页| 91精品免费久久久久久久久| 亚洲成人精品久久久| 中文字幕亚洲天堂| 国产视频精品xxxx| 久久久欧美一区二区| 久久精品国亚洲| 精品国产一区二区三区久久狼5月| 亚洲一区二区三区在线视频| 亚洲精品乱码久久久久久按摩观| 国产午夜精品视频免费不卡69堂| 亚洲丝袜在线视频| 中文字幕日韩精品在线| 日韩精品久久久久久福利| 美女啪啪无遮挡免费久久网站| 欧美激情一区二区三区高清视频| 久久久国产精品一区| 中文字幕亚洲欧美日韩2019| 亚洲性生活视频在线观看| 久久综合国产精品台湾中文娱乐网| 久久人体大胆视频| 亚洲美女久久久| 久久久亚洲国产天美传媒修理工| 国产精品黄色影片导航在线观看| 久久久噜噜噜久噜久久| 性夜试看影院91社区| 久久免费成人精品视频| 久久久www成人免费精品张筱雨| 亚洲色图偷窥自拍| 国产精品福利在线观看网址| 国产在线精品一区免费香蕉| 久久综合电影一区| 国产精品久久久久久久久久久新郎| 国产精品免费一区豆花| 中文字幕国产亚洲2019| 欧美精品激情在线观看| 91在线免费网站| 国产第一区电影| 精品国产福利在线| 日韩视频在线一区| 久久久久久久亚洲精品| 久久国产精品99国产精| 久久久久久久久久国产精品| 26uuu日韩精品一区二区| 91精品视频播放| 日韩精品免费一线在线观看| 中文字幕一区日韩电影| 亚洲国产高清自拍| 日本高清不卡在线| 国产欧美日韩亚洲精品| 久久夜色精品亚洲噜噜国产mv| 欧美肥老妇视频| 久久不射热爱视频精品| 欧美成人在线免费视频| 影音先锋日韩有码| 精品一区精品二区| 亚洲人成欧美中文字幕| 国产成人精品免高潮在线观看| 日韩av片永久免费网站| 日韩成人免费视频| 欧美精品videossex88| 91久久在线观看| 欧美性开放视频| 久久综合免费视频影院| 欧美日韩一区二区在线| 丁香五六月婷婷久久激情| 久久福利视频导航| 精品国产欧美成人夜夜嗨| 亚洲女人天堂视频| 欧美激情国产日韩精品一区18| 青青草99啪国产免费| 欧美一区二粉嫩精品国产一线天| 精品国偷自产在线| 成人福利视频网| 日韩**中文字幕毛片| 欧美黄色片在线观看| 亚洲国产高清高潮精品美女| 中文字幕国产日韩| 欧美精品videosex性欧美| 久久久精品一区二区| 国产午夜精品全部视频在线播放| 欧美wwwxxxx| 在线播放日韩精品| 久久精品视频中文字幕| 欧美日韩亚洲精品一区二区三区| 亚洲国产天堂久久综合网| 日韩精品高清在线观看| 久久视频在线观看免费| 亚洲精品自拍第一页| 热久久免费视频精品| 欧美性做爰毛片| 国产精品一区电影| 欧美精品videosex牲欧美| 欧美一级高清免费播放| 久久亚洲一区二区三区四区五区高| 久久精品久久久久电影| 国产成人精品免高潮在线观看| 国模精品视频一区二区| 亚洲久久久久久久久久| 国产婷婷97碰碰久久人人蜜臀| 另类天堂视频在线观看| 国产中文字幕亚洲| 欧美性少妇18aaaa视频| 狠狠操狠狠色综合网| 国产精品视频网址| 91精品久久久久久久久中文字幕| 亚洲女人天堂成人av在线| 亚洲性av在线| 久久国产精品视频| 精品国产乱码久久久久久婷婷| 国产不卡视频在线| 欧美最猛黑人xxxx黑人猛叫黄| 久久人人爽亚洲精品天堂| 久久成人精品视频| 久久久亚洲国产天美传媒修理工| 国产精品久久久久久av福利软件| 欧美大片在线免费观看| 欧美午夜无遮挡| 亚洲精品一区av在线播放| 日韩精品在线播放| 一个人www欧美| 6080yy精品一区二区三区| 久久久久久久久久久免费| 国产69久久精品成人看| 97视频在线观看免费| 国产精品视频午夜| 国产精品久久久久久av下载红粉| 国产99久久精品一区二区| 欧美一级视频在线观看| 亚洲变态欧美另类捆绑|