麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

json_encode和serialize(二)

2019-11-14 08:43:29
字體:
供稿:網(wǎng)友

4 json和js的序列化        

      緊接之前的第一篇博客,按照鏈?zhǔn)降膶W(xué)習(xí)方法,我自然的想到了php有序列化,那么,js的序列化呢。由此查閱資料得出以下自己的幾個(gè)總結(jié)和理解:

 (1)首先,理解json,關(guān)于json。最重要的是要明白,json是一種數(shù)據(jù)格式,不是一種編程語(yǔ)言,雖然具有相同的語(yǔ)法形式,但是json并不從屬于js。并且不是只有js才能使用json-》所以我明白了。為什么php也會(huì)有json_encode函數(shù),因?yàn)閷?duì)于php來說,這個(gè)函數(shù)是實(shí)現(xiàn)json數(shù)據(jù)格式的方法,而對(duì)于js來說JSON.stringify是屬于js實(shí)現(xiàn)json格式的方法,當(dāng)然,這兩種語(yǔ)言之間的json格式是一樣的,但是需要注意,json_encode會(huì) 將關(guān)聯(lián)數(shù)組(包括含有顯式的數(shù)值鍵名的數(shù)值型數(shù)組)和對(duì)象轉(zhuǎn)換為json對(duì)象字符串,數(shù)值型數(shù)組則會(huì)轉(zhuǎn)換為json數(shù)組。

$a=array(1,2,3,'fd');var_dump((json_encode($a)),"a");輸出

string(12) "[1,2,3,"fd"]" string(1) "a" 而

$a=array(1=>1,2,3,'fd');var_dump((json_encode($a)),"a");輸出

string(28) "{"1":1,"2":2,"3":3,"4":"fd"}" string(1) "a" (2)json可以表示簡(jiǎn)單值,對(duì)象,數(shù)組三種數(shù)組類型,但是需要注意的是,json字符串必須一定要用雙引號(hào)?。。。?!

       與js對(duì)象字面對(duì)比,json對(duì)象有兩個(gè)地方不一樣,首先沒有聲明變量,其次沒有末尾的分號(hào),還有,對(duì)象的屬性(屬性哦哦)必須加雙引號(hào)!!?。。。。。。?!

   js對(duì)象

var person={  

    name;"wang",

   age: 20

}  ;

json對(duì)象

{

  "name":"wang",

   "age":29

}

總而言之是,表示簡(jiǎn)單json字符串的時(shí)候,需要雙引號(hào),json對(duì)象屬性的時(shí)候也需要雙引號(hào);

 js數(shù)組

var value=[25,"hi"];

json數(shù)組

[25,"hi"]

(3)解析與序列化

 json對(duì)象有兩個(gè)方法 stringify()和parse()分別用于把js對(duì)象序列化為json字符串和把json字符串解析為原生的js值。

JSON.stringify()可以將js對(duì)象(對(duì)象哦)序列化為json字符串,這個(gè)函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)接收js對(duì)象,第二個(gè)參數(shù)可以是一個(gè)數(shù)組(表示需要轉(zhuǎn)換的屬性),或者一個(gè)函數(shù),對(duì)轉(zhuǎn)換的時(shí)候進(jìn)行屬性加工,第三個(gè)參數(shù)是一個(gè)選項(xiàng),表示是否在json字符串中保留縮進(jìn)(具體代碼可以百度)。-》類似于php__sleep魔術(shù)方法對(duì)于serialzie串行化的時(shí)候進(jìn)行過濾或者加工一樣、

一個(gè)細(xì)節(jié)需要注意,進(jìn)行序列化的時(shí)候,當(dāng)值為undefined的任何屬性都會(huì)被跳過。

<script type="text/javascript">var person={		name:undefined,		age:23};var x=JSON.stringify(person);document.write(x);</script>輸出為

{"age":23}

    同時(shí)還存在一個(gè)toJSON方法,可以為任何對(duì)象添加,返回其自身的json數(shù)據(jù)格式,即可以按照自己的需要返回一個(gè)自定義的字符串,這個(gè)時(shí)候調(diào)用JSON.stringify ()的時(shí)候會(huì)對(duì)返回的這個(gè)字符串進(jìn)行操作。

<script type="text/Javascript">var person={		name:"test",		age:23,		toJSON:function(){			return this.name;		}};var x=JSON.stringify(person);document.write(x);</script>輸出"test"

   所以這個(gè)順序是,先走toJSON方法,然后再走JOSN.stringify(),如果沒有toJOSN()則直接對(duì)對(duì)象序列化,如果存在則對(duì)返回的數(shù)據(jù)序列化。

   JSON.parse()方法可以接收兩個(gè)參數(shù),第一個(gè)參數(shù)是需要解析的還原的json字符串,第二個(gè)參數(shù)可以為一個(gè)函數(shù),這個(gè)函數(shù)有兩個(gè)參數(shù)分別對(duì)應(yīng)鍵和值,從而可以實(shí)現(xiàn)對(duì)json字符串還原為對(duì)象時(shí)候的再操作。類似于php中unserialize的時(shí)候調(diào)用的__wakeUp魔術(shù)方法一樣。

     至此,由于看書看到php序列化而衍生想到的知識(shí)和學(xué)習(xí)的過程就到這結(jié)束了。今后的學(xué)習(xí)過程中還是需要按照這樣的思維去學(xué)習(xí),鏈?zhǔn)綄W(xué)習(xí),每天積累,總有一天會(huì)成為大牛!加油!

    由php的序列化而想到了js的序列化,雖然做了些總結(jié),但是還有些疑問,感覺還可以更細(xì)致,對(duì)json更加詳細(xì)的思考和總結(jié)留待下次再進(jìn)行更深刻細(xì)致的挖掘,那個(gè)時(shí)候再?gòu)念^回來再總結(jié)一次json,先留一個(gè)坑。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美精品亚洲人成在线观看 | 精品免费在线视频 | 国产成人精品免费视频大全最热 | 久久久久久久不卡 | 一级电影在线免费观看 | 双性精h调教灌尿打屁股的文案 | 久久国语对白 | 中文字幕在线资源 | 国产毛片视频 | 亚洲一区二区在线视频 | av国产在线被下药迷网站 | 国产精品高潮视频 | 亚洲一区二区在线视频 | 韩国一级免费视频 | 日本精品视频一区二区三区四区 | 天天干导航 | 欧美成人午夜一区二区三区 | 美女毛片在线观看 | 双性帝王调教跪撅打屁股 | 69性欧美高清影院 | 久久99国产视频 | 成人羞羞在线观看网站 | 一级@片| 免费黄色在线电影 | 最新se94se在线欧美 | 国产日产精品一区二区三区四区 | 亚洲午夜电影 | 视频一区国产 | 中国av中文字幕 | 久久久久久久不卡 | 99精品视频在线免费观看 | 国产免费高清 | 意大利av在线 | 免费黄色a | 黄色av电影在线播放 | 黄色av网站在线观看 | 久久久久一区 | 午夜a狂野欧美一区二区 | 日韩欧美精品中文字幕 | 国产免费www | 精品久久久久久久久久久久久 |