国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript解析及序列化JSON的方法實(shí)例分析

2024-05-06 15:43:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了JavaScript解析及序列化JSON的方法。分享給大家供大家參考,具體如下:

JSON 之所以這么流行,是因?yàn)?JSON 數(shù)據(jù)結(jié)構(gòu)可以被解析為 JavaScript 對(duì)象。JSON 之前的 XML 數(shù)據(jù)結(jié)構(gòu)要被解析,需要先解析成 DOM 文檔,然后再?gòu)闹刑崛〕鰯?shù)據(jù)。相比之下,JSON 數(shù)據(jù)結(jié)構(gòu)方便多咯O(∩_∩)O~

所以 JSON 就成為 web 開(kāi)發(fā)中,用于數(shù)據(jù)交換的事實(shí)標(biāo)準(zhǔn)。

1 JSON 對(duì)象

早期的 JSON 解析器是使用 JavaScript 的 eval() 函數(shù)。因?yàn)?JSON 是 JavaScript 語(yǔ)法的子集,所以 eval() 函數(shù)可以解析并返回 JavaScript 對(duì)象。但使用這個(gè)函數(shù)存在風(fēng)險(xiǎn),因?yàn)橛锌赡軙?huì)被執(zhí)行一些惡意的代碼!ECMAScript 5 定義了全局對(duì)象 JSON。支持這個(gè)對(duì)象的瀏覽器有 IE8+、Firefox 3.5+、Safari 4+、Chrome 和 Opera 10.5+。而舊版的瀏覽器建議使用 JSON-js 庫(kù)。

JSON 對(duì)象有兩個(gè)方法:

1. stringify(),會(huì)把 JavaScript 對(duì)象序列化為 JSON 字符串。
2. parse(),會(huì)把 JSON 字符串解析為原生的 JavaScript 對(duì)象。

<script type="text/javascript">var book = {  title: "music",  authors: ["deniro"],  edition: 1,  year: 2017};var jsonText = JSON.stringify(book);console.log(jsonText);var bookCopy = JSON.parse(jsonText);console.log(bookCopy);</script>

默認(rèn)情況下,JSON.stringify() 輸出的字符串不包含任何空格字符以及縮進(jìn)。而且所有的函數(shù)以及原型成員都會(huì)被有意忽略。此外,值為 undefined 的屬性也會(huì)被跳過(guò)。所以結(jié)果中都是值為有效的屬性。

注意:上面代碼中的 book 與 bookCopy 雖然具有相同的屬性,但它們是兩個(gè)獨(dú)立的、沒(méi)有任何關(guān)系的對(duì)象。

如果傳給 JSON.parse() 的字符串不是有效的 JSON 字符串,就會(huì)拋出錯(cuò)誤。

2 序列化選項(xiàng)

JSON.stringify() 還可以接收另外兩個(gè)參數(shù)。第二個(gè)參數(shù)是過(guò)濾器,可以是數(shù)組,也可以是函數(shù);第三個(gè)參數(shù)表示是否在 JSON 字符串中保留縮進(jìn)。

2.1 過(guò)濾結(jié)果

如果過(guò)濾器的參數(shù)是數(shù)組,那么結(jié)果中將只會(huì)包含這個(gè)數(shù)組所列出的屬性:

<script type="text/javascript">var book = {  title: "music",  authors: ["deniro"],  edition: 1,  year: 2017};//過(guò)濾結(jié)果var jsonTextAfterFilter=JSON.stringify(book,["title","edition"]);console.log(jsonTextAfterFilter);//{"title":"music","edition":1}</script>

如果過(guò)濾器的參數(shù)是函數(shù),那么這個(gè)函數(shù)會(huì)接收兩個(gè)參數(shù),屬性名和屬性值。屬性名只能是字符串,如果它所對(duì)應(yīng)的屬性值不是鍵值對(duì)結(jié)構(gòu)的值時(shí),那么屬性名可以是空字符串。這個(gè)函數(shù)的返回值就是相應(yīng)屬性名對(duì)應(yīng)的值。如果函數(shù)返回 undefined,那么相應(yīng)的屬性就會(huì)被忽略:

<script type="text/javascript">  var book = {    title: "music",    authors: ["deniro"],    edition: 1,    year: 2017  };  var jsonText = JSON.stringify(book, function (key, value) {    switch (key) {      case "authors":        return value.join(",");      case "year":        return 10000;      case "edition":        return undefined;      default :        return value;    }  });  console.log(jsonText);//{"title":"music","authors":"deniro","year":10000}</script>            
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 伊川县| 随州市| 秦皇岛市| 鄢陵县| 二连浩特市| 苏尼特右旗| 夏河县| 洛隆县| 班戈县| 东丰县| 灵武市| 垫江县| 邳州市| 斗六市| 忻城县| 黑河市| 华容县| 贡嘎县| 武功县| 河间市| 焉耆| 栖霞市| 邛崃市| 江北区| 望江县| 罗山县| 长汀县| 武强县| 韩城市| 淮安市| 九龙坡区| 大田县| 子洲县| 和林格尔县| 柘城县| 阿坝| 淄博市| 治县。| 东阳市| 浦江县| 澎湖县|