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

首頁 > 編程 > JavaScript > 正文

JavaScript之json_動力節點Java學院整理

2019-11-19 16:13:26
字體:
來源:轉載
供稿:網友

JSON是JavaScript Object Notation的縮寫,它是一種數據交換格式。

在JSON出現之前,大家一直用XML來傳遞數據。因為XML是一種純文本格式,所以它適合在網絡上交換數據。XML本身不算復雜,但是,加上DTD、XSD、XPath、XSLT等一大堆復雜的規范以后,任何正常的軟件開發人員碰到XML都會感覺頭大了,最后大家發現,即使你努力鉆研幾個月,也未必搞得清楚XML的規范。

終于,在2002年的一天,道格拉斯?克羅克福特(Douglas Crockford)同學為了拯救深陷水深火熱同時又被某幾個巨型軟件企業長期愚弄的軟件工程師,發明了JSON這種超輕量級的數據交換格式。

道格拉斯同學長期擔任雅虎的高級架構師,自然鐘情于JavaScript。他設計的JSON實際上是JavaScript的一個子集。在JSON中,一共就這么幾種數據類型:

  1. number:和JavaScript的number完全一致;
  2. boolean:就是JavaScript的truefalse;
  3. string:就是JavaScript的string;
  4. null:就是JavaScript的null
  5. array:就是JavaScript的Array表示方式――[]
  6. object:就是JavaScript的{ ... }表示方式。

以及上面的任意組合。

并且,JSON還定死了字符集必須是UTF-8,表示多語言就沒有問題了。為了統一解析,JSON的字符串規定必須用雙引號"",Object的鍵也必須用雙引號""。

由于JSON非常簡單,很快就風靡Web世界,并且成為ECMA標準。幾乎所有編程語言都有解析JSON的庫,而在JavaScript中,我們可以直接使用JSON,因為JavaScript內置了JSON的解析。

把任何JavaScript對象變成JSON,就是把這個對象序列化成一個JSON格式的字符串,這樣才能夠通過網絡傳遞給其他計算機。

如果我們收到一個JSON格式的字符串,只需要把它反序列化成一個JavaScript對象,就可以在JavaScript中直接使用這個對象了。

序列化

讓我們先把小明這個對象序列化成JSON格式的字符串:

var xiaoming = {  name: '小明',  age: 14,  gender: true,  height: 1.65,  grade: null,  'middle-school': '/"W3C/" Middle School',  skills: ['JavaScript', 'Java', 'Python', 'Lisp']};JSON.stringify(xiaoming); // '{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"/"W3C/" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'

要輸出得好看一些,可以加上參數,按縮進輸出:

JSON.stringify(xiaoming, null, ' ');

結果:

{ "name": "小明", "age": 14, "gender": true, "height": 1.65, "grade": null, "middle-school": "/"W3C/" Middle School", "skills": [  "JavaScript",  "Java",  "Python",  "Lisp" ]}

第二個參數用于控制如何篩選對象的鍵值,如果我們只想輸出指定的屬性,可以傳入Array:

JSON.stringify(xiaoming, ['name', 'skills'], ' ');

結果:

{ "name": "小明", "skills": [  "JavaScript",  "Java",  "Python",  "Lisp" ]}

還可以傳入一個函數,這樣對象的每個鍵值對都會被函數先處理:

function convert(key, value) {  if (typeof value === 'string') {    return value.toUpperCase();  }  return value;}JSON.stringify(xiaoming, convert, ' ');

上面的代碼把所有屬性值都變成大寫:

{ "name": "小明", "age": 14, "gender": true, "height": 1.65, "grade": null, "middle-school": "/"W3C/" MIDDLE SCHOOL", "skills": [  "JAVASCRIPT",  "JAVA",  "PYTHON",  "LISP" ]}

如果我們還想要精確控制如何序列化小明,可以給xiaoming定義一個toJSON()的方法,直接返回JSON應該序列化的數據:

var xiaoming = {  name: '小明',  age: 14,  gender: true,  height: 1.65,  grade: null,  'middle-school': '/"W3C/" Middle School',  skills: ['JavaScript', 'Java', 'Python', 'Lisp'],  toJSON: function () {    return { // 只輸出name和age,并且改變了key:      'Name': this.name,      'Age': this.age    };  }};JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'

反序列化

拿到一個JSON格式的字符串,我們直接用JSON.parse()把它變成一個JavaScript對象:

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}JSON.parse('true'); // trueJSON.parse('123.45'); // 123.45

JSON.parse()還可以接收一個函數,用來轉換解析出的屬性:

JSON.parse('{"name":"小明","age":14}', function (key, value) {  // 把number * 2:  if (key === 'name') {    return value + '同學';  }  return value;}); // Object {name: '小明同學', age: 14}

在JavaScript中使用JSON,就是這么簡單!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美精品一区二区视频 | 九九精品视频观看 | 色妞欧美 | 欧美四级在线观看 | 久久久久一区二区三区 | 性生活香蕉视频 | 国产精品久久久久久久久久免 | 一边吃奶一边插下面 | 欧美日韩成人一区二区 | 成人一区二区三区在线 | 国产成人精品一区在线播放 | 久久久久国产成人免费精品免费 | 色毛片| 亚洲精品一区二区三区大胸 | 欧美另类综合 | 特黄一级小说 | 国产成年人在线观看 | 最新在线黄色网址 | 精品国产乱码久久久久久久 | 91avsese| 爱爱视频天天干 | 久久99亚洲精品久久99果 | 久久国产成人午夜av浪潮 | 在线观看免费视频麻豆 | 男女生羞羞视频网站在线观看 | 日日狠狠久久偷偷四色综合免费 | 成人情欲视频在线看免费 | 视频在线中文字幕 | 久久精品电影网 | 曰韩在线视频 | 毛片在线免费视频 | 一区二区久久电影 | 色综合网在线观看 | 羞羞的动漫在线观看 | 成人毛片免费 | 在线观看麻豆 | 91看片王| 国产色视频一区 | 草草久久久 | 国产资源在线免费观看 | 免费在线观看国产精品 |