json序列化和反序列化方法 博途序列化指令?
博途序列化指令?PHP s serialize是將變量序列化,返回一個(gè)具有變量類型和結(jié)構(gòu)的字符串表達(dá)式,而JSON是一種更輕便、更友好的接口數(shù)據(jù)交換格式(AJAX、REST等。),兩者都以字符串的形
博途序列化指令?
PHP s serialize是將變量序列化,返回一個(gè)具有變量類型和結(jié)構(gòu)的字符串表達(dá)式,而JSON是一種更輕便、更友好的接口數(shù)據(jù)交換格式(AJAX、REST等。),兩者都以字符串的形式體現(xiàn)數(shù)據(jù)結(jié)構(gòu)。
1目的
Serialize主要用于序列化php,并將其存儲(chǔ)在文件或數(shù)據(jù)庫中。
Json_encode序列化主要用于與其他語言交互。對(duì)于傳輸來說,json有很多優(yōu)勢(shì)。
2內(nèi)容
序列化序列化后的字符串包含額外的內(nèi)容,即值的類型和長度的編碼。
Json_encode只包含鍵值。
serialize后的內(nèi)容比json_encode后的內(nèi)容長。
3對(duì)象序列化
在解碼json_decode的時(shí)候,請(qǐng)注意,如果是序列化的數(shù)值數(shù)組,json_decode可以恢復(fù)到原來的數(shù)組。但是,如果它是一個(gè)關(guān)聯(lián)數(shù)組(或者一個(gè)對(duì)象),json_decode可以 t確定它是一個(gè)關(guān)聯(lián)數(shù)組還是一個(gè)對(duì)象,所以json_decode在默認(rèn)情況下將被恢復(fù)到stdclass的一個(gè)對(duì)象,如果第二個(gè)參數(shù)為true,它將被恢復(fù)到一個(gè)關(guān)聯(lián)數(shù)組。
4對(duì)象方法
Json_encode無法序列化對(duì)象的成員方法。
序列化后,unserialize反序列化的數(shù)據(jù)可以再次調(diào)用成員方法,但json_decode可以 t,將會(huì)報(bào)告一個(gè)錯(cuò)誤。
5 _ _睡眠和_ _喚醒魔法方法
當(dāng)一個(gè)對(duì)象被序列化時(shí),PHP將調(diào)用__sleep方法(如果存在的話),并執(zhí)行操作,比如給變量賦值。在反序列化一個(gè)對(duì)象后,PHP將調(diào)用__wakeup方法。這兩種方法都不接受參數(shù)。__sleep方法必須返回包含要序列化的屬性的數(shù)組。PHP將丟棄其他屬性的值。如果沒有__sleep方法,PHP將丟棄其他屬性的值。
在程序執(zhí)行之前,serialize()函數(shù)會(huì)先檢查是否有一個(gè)神奇的方法__sleep。如果有,首先調(diào)用__sleep()方法,然后執(zhí)行序列化操作。這個(gè)函數(shù)可以用來清理對(duì)象,并返回一個(gè)包含對(duì)象中所有變量名稱的數(shù)組(必須返回。相反,unserialize()檢查是否有__wakeup方法。如果存在,將首先調(diào)用__wakeup方法,例如,該方法可用于重新連接數(shù)據(jù)庫。
6演示測(cè)試
Foo類
私人$name
公共娛樂動(dòng)作測(cè)試(){
返回#39測(cè)試# 39
}
}
$foo新foo()
$cser序列化($foo)
$uncser取消序列化($cser)
$json json_encode($foo)
$unjson json_decode($json)
echo $uncser-gttest()
echo $unjson-gtt:
試驗(yàn)
PHP在第33行對(duì)未定義的方法stdclass: : t:調(diào)用
如何把一個(gè)json數(shù)組轉(zhuǎn)換成list?
轉(zhuǎn)儲(chǔ)是序列化,它可以將列表轉(zhuǎn)換為字符串。
將字符串還原到列表中。
導(dǎo)入json
ABC[123454]
abc_json json.dumps(abc)
打印(abc_json -
,abc_json,
,類型(abc_json))
abc_list json.loads(abc_json)
打印(abc_list -
,abc_list,
,類型(abc_list))
結(jié)果:
abc_json -
[1, 2, 3, 454]
ltclass strgt
abc_list -
[1, 2, 3, 454]
ltclass列表gt
