99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

JavaScript核心技術之JSON詳解

2023-3-31    前端達人

JSON是什么?

JSON(JavaScript Object Notation, JS對象簡譜)是一種輕量級的數據交換格式。它基于 ECMAScript(European Computer Manufacturers Association, 歐洲計算機協會制定的js規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。 

JSON源自于JavaScript,是一種輕量級(Light-Meight)、基于文本的(Text-Based)、可讀的(Human-Readable)格式。

在現在的開發中,能夠進行數據交換格式的,包括兩個JSON   XML。

JSON是存儲和交換文本信息的語法,類似 XML,JSON比 XML更小、更快,更易解析。

 那么,簡而言之,對JSON的說明總結如下:

  • JSON是獨立于任何編程語言的數據格式
  • 是一種用于存儲和傳輸數據的輕量級格式
  • 語法是自描述的,便于人類閱讀和理解

JSON語法

基本語法:

  • 數組(Array)用方括號 "[]" 表示
  • 對象(0bject)用大括號 "{}" 表示
  • 名稱 / 值 對(name/value)組合成數組和對象
  • 名稱( name )置于雙引號中,值(value)有字符串、數值、布爾值、null、對象和數組
  • 并列的數據之間用逗號 "," 分隔
  • 名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值

需要注意的是:

JSON不支持注釋。向 JSON添加注釋無效

JSON文件的文件類型是 .json

JSON文本的 MIME 類型是 application/json

獲取JSON數據

 json是以對象的形式存在的,直接獲取JSON數據可通過如下方法:

1. json對象.鍵名

2. json對象["鍵名"]

3. 數組對象[索引]

4. 遍歷 

代碼示例:


  1. //定義基本格式
  2. var person = { name: "張三", age: 23, gender: true };
  3. var persons = [
  4. { name: "張三", age: 23, gender: true },
  5. { name: "李四", age: 24, gender: true },
  6. { name: "王五", age: 25, gender: false },
  7. ];
  8. //獲取person對象中所有的鍵和值
  9. //for in 循環
  10. /* for(var key in person){
  11. //這樣的方式獲取不行。因為相當于 person."name"
  12. //alert(key + ":" + person.key);
  13. alert(key+":"+person[key]);
  14. }*/
  15. //獲取persons中的所有值
  16. for (var i = 0; i < persons.length; i++) {
  17. var p = persons[i];
  18. for (var key in p) {
  19. console.log(key + ":" + p[key]);
  20. }
  21. }

 輸出結果為:

 JSON 解析與序列化(在JavaScript中)

先在控制臺中打印一下JSON對象,看看有什么,如圖:

 顯而易見,在JavaScript中JSON對象僅有兩個方法:parse和stringify。后面會詳細介紹一下這兩個方法

序列化的概念:序列化是將對象轉化為字節序列的過程。對象序列化后可以在網絡上傳輸,或者保存到硬盤上。

將對象序列化成json字符串: JSON.stringify(json對象);

反序列化:將json字符串反序列化為對象:   JSON.parse(str)

JSON.parse

API介紹:用來解析 JSON字符串,構造由字符串描述的 JavaScript 值或對象,傳入的字符串不符合 JSON規范會報錯

語法:

JSON.parse(str, reviver);
  • str:要解析的 JSON字符串
  • reviver:可選的函數 function(key,value),該函數的第一個參數和第二個參數分別代表鍵值對的鍵和值,并可以對值進行轉換(函數返回值當做處理后的value)

代碼示例:


  1. // JSON.parse() 解析JSON字符串, 將JSON轉換為對象
  2. let json = '{"name": ["js", "webpack"], "age": 22, "gridFriend": "ljj"}';
  3. console.log(JSON.parse(json));
  4. // {name: Array(2), age: 22, gridFriend: 'ljj'}
  5. // 第二個參數是一個函數,key和value代表每個key/value對
  6. let result = JSON.parse(json, (key, value) => {
  7. if (key == "age") {
  8. return `年齡:${value}`;
  9. }
  10. return value;
  11. });
  12. console.log(result);
  13. //{name: Array(2), age: '年齡:22', gridFriend: 'ljj'}

 JSON.stringify

API介紹:將一個 JavaScript 對象或值轉換為 JSON字符串

如果指定了一個 replacer 函數,則可以選擇性地替換值,或者指定的 replacer 是數組,則可選擇性地僅包含數組指定的屬性

語法:

JSON.stringify(value, replacer, space)

value:將要序列化成 一個 JSON 字符串的值

replacer:

  • 如果該參數是一個函數,則在序列化過程中,被序列化的值的每個屬性都會經過該函數的轉換和處理
  • 如果該參數是一個數組,則只有包含在這個數組中的屬性名才會被序列化到最終的 JSON 字符串中
  • 如果該參數為 null 或者未提供,則對象所有的屬性都會被序列化

space:指定縮進用的空白字符串,用于美化輸出

  • 如果參數是個數字,它代表有多少的空格;上限為10。該值若小于1,則意味著沒有空格
  • 如果該參數為字符串(當字符串長度超過10個字母,取其前10個字母),該字符串將被作為空格
  • 如果該參數沒有提供(或者為 null),將沒有空格

代碼示例:


  1. let obj = {
  2. name: "jsx",
  3. age: 22,
  4. lesson: ["html", "css", "js"],
  5. };
  6. let json = JSON.stringify(obj);
  7. console.log(json);
  8. // {"name":"jsx","age":22,"lesson":["html","css","js"]}
  9. // 第二個參數replacer 為函數時,被序列化的值得屬性都會經過該函數轉換處理
  10. function replacer(key, value) {
  11. if (typeof value === "string") {
  12. return undefined;
  13. }
  14. return value;
  15. }
  16. let result = JSON.stringify(obj, replacer);
  17. console.log(result);
  18. // {"age":22,"lesson":[null,null,null]}
  19. // 當replacer參數為數組,數組的值代表將被序列化成 JSON 字符串的屬性名
  20. let result1 = JSON.stringify(obj, ["name", "lesson"]);
  21. // 只保留 “name” 和 “lesson” 屬性值
  22. console.log(result1);
  23. // {"name":"jsx","lesson":["html","css","js"]}
  24. // 第三個參數spcae,用來控制結果字符串里面的間距
  25. let result2 = JSON.stringify(obj, null, 4);
  26. console.log(result2);
  27. /*{
  28. "name": "jsx",
  29. "age": 22,
  30. "lesson": [
  31. "html",
  32. "css",
  33. "js"
  34. ]
  35. }*/

 注意:如果replacer是一個函數,則該函數會進行深處理,即如果鍵值對的值也是一個數組,則也會執行該函數

JSON.stringify()原理

  • 轉換值如果有 toJSON() 方法,該方法定義什么值將被序列化
  • 非數組對象的屬性不能保證以特定的順序出現在序列化后的字符串中
  • 布爾值、數字、字符串的包裝對象在序列化過程中會自動轉換成對應的原始值,undefined、任意的函數以及 symbol 值,在序列化過程中會被忽略(出現在非數組對象的屬性值中時)或者被轉換成 null(出現在數組中時)。函數、undefined 被單獨轉換時,會返回 undefined,如JSON.stringify(function(){}) or JSON.stringify(undefined)
  • 對包含循環引用的對象(對象之間相互引用,形成無限循環)執行此方法,會拋出錯誤
  • 所有以 symbol 為屬性鍵的屬性都會被完全忽略掉,即便 replacer 參數中強制指定包含了它們
  • Date 日期調用了 toJSON() 將其轉換為了 string 字符串(同Date.toISOString()),因此會被當做字符串處理
  • NaN 和 Infinity 格式的數值及 null 都會被當做 null
  • 其他類型的對象,包括 Map/Set/WeakMap/WeakSet,僅會序列化可枚舉的屬性


藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

藍藍設計www.lapeinture.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

日歷

鏈接

個人資料

藍藍設計的小編 http://www.lapeinture.cn

存檔

韩国毛片基地| 日韩中文字幕在线播放| 国产国语对白一级毛片| 91麻豆tv| 亚洲 欧美 成人日韩| 亚飞与亚基在线观看| 欧美激情一区二区三区中文字幕| 你懂的日韩| 国产一区精品| 91麻豆精品国产综合久久久| 精品国产一区二区三区国产馆 | 韩国三级一区| 国产美女在线一区二区三区| 国产麻豆精品免费密入口| 四虎影视久久久| 精品视频在线观看视频免费视频| 免费毛片基地| 台湾毛片| 欧美另类videosbestsex高清| 日韩在线观看视频黄| 99色视频在线观看| 欧美另类videosbestsex久久| 欧美激情影院| 国产麻豆精品高清在线播放| 国产a视频| 欧美一级视| 日日日夜夜操| 久久精品欧美一区二区| 91麻豆爱豆果冻天美星空| 成人免费观看视频| 精品国产一级毛片| 国产成a人片在线观看视频| 日韩一级黄色| 久久国产精品永久免费网站| 国产不卡高清| 欧美α片无限看在线观看免费| 国产a视频精品免费观看| 韩国毛片基地| 日韩女人做爰大片| 夜夜操天天爽| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 中文字幕97| 精品在线观看国产| 麻豆污视频| 二级特黄绝大片免费视频大片| 一级毛片视频免费| 国产精品免费久久| 欧美日本二区| 美女免费毛片| 精品视频在线观看一区二区三区| 国产视频久久久| 免费国产一级特黄aa大片在线| 成人a大片在线观看| 久久久成人网| 亚洲女初尝黑人巨高清在线观看| 精品国产三级a∨在线观看| 午夜欧美成人香蕉剧场| a级精品九九九大片免费看| 国产亚洲免费观看| 亚洲 国产精品 日韩| 国产高清在线精品一区a| 久久国产影视免费精品| 毛片高清| 一 级 黄 中国色 片| 欧美大片一区| 麻豆系列 在线视频| 欧美激情影院| a级精品九九九大片免费看| 午夜欧美成人久久久久久| 亚洲精品久久玖玖玖玖| 天堂网中文字幕| 久久国产精品永久免费网站| 精品国产亚一区二区三区| 日韩免费在线| 欧美大片aaaa一级毛片| 99久久精品国产免费| 精品视频在线观看视频免费视频| 欧美α片无限看在线观看免费| 国产综合成人观看在线| 一级毛片看真人在线视频| 一级女人毛片人一女人| 国产a一级| 欧美激情一区二区三区在线播放 | 国产极品精频在线观看| 欧美国产日韩久久久| 国产欧美精品| 黄视频网站免费观看| 欧美激情一区二区三区中文字幕| 四虎影视久久| 韩国三级香港三级日本三级| 久久国产影视免费精品| 韩国三级香港三级日本三级la | 九九干| 二级片在线观看| 91麻豆精品国产高清在线| 国产原创中文字幕| 亚久久伊人精品青青草原2020| 成人免费网站视频ww| 日本伦理片网站| 国产麻豆精品高清在线播放| 国产高清视频免费观看| 天天做日日爱夜夜爽| 久久精品免视看国产明星| 欧美日本免费| 国产高清在线精品一区二区| | 青青久久精品| 九九久久国产精品大片| 欧美激情一区二区三区视频高清 | 999久久狠狠免费精品| 天天做日日爱| 99久久网站| 免费毛片播放| 麻豆系列 在线视频| 国产一区精品| 日本特黄特黄aaaaa大片| 亚洲第一色在线| 日韩免费在线| 午夜家庭影院| 天天色色色| 美女免费精品视频在线观看| 国产视频久久久| 精品国产一区二区三区久| 色综合久久天天综线观看| 久久国产一区二区| 日本特黄特色aaa大片免费| 国产极品白嫩美女在线观看看| 久久国产精品只做精品| 韩国毛片| 日韩在线观看视频免费| 四虎久久精品国产| 精品国产一区二区三区精东影业| a级毛片免费观看网站| 精品国产三级a| 黄视频网站在线看| 欧美大片a一级毛片视频| 日本免费乱人伦在线观看| 色综合久久天天综合绕观看| 免费的黄视频| 999精品在线| 国产网站免费观看| 成人免费福利片在线观看| 高清一级淫片a级中文字幕| 成人a级高清视频在线观看| 91麻豆爱豆果冻天美星空| 一级毛片视频免费| 中文字幕一区二区三区精彩视频| 亚欧成人乱码一区二区| 香蕉视频一级| 成人免费观看的视频黄页| 国产综合成人观看在线| 亚洲精品中文字幕久久久久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美爱色| 成人a大片在线观看| 在线观看成人网| 精品久久久久久影院免费| 成人高清视频免费观看| 天天做日日干| 欧美18性精品| 免费毛片播放| 国产麻豆精品hdvideoss| 日韩在线观看视频免费| 国产极品精频在线观看| 午夜激情视频在线播放| 亚洲第一色在线| 99色播| 国产高清在线精品一区二区| 日韩av片免费播放| 日韩专区第一页| 午夜在线亚洲| 欧美大片毛片aaa免费看| 国产成人精品综合在线| 国产a视频| 欧美国产日韩精品| 日韩一级黄色片| 日韩欧美一及在线播放| 欧美激情中文字幕一区二区| 成人a大片在线观看| 国产综合91天堂亚洲国产| 国产精品免费精品自在线观看| 日韩一级黄色| 日本免费乱理伦片在线观看2018| 欧美国产日韩一区二区三区| 天堂网中文在线| 国产91精品系列在线观看| 精品国产亚洲一区二区三区| 色综合久久天天综合观看| 精品国产一级毛片| 久久精品欧美一区二区| 成人免费观看男女羞羞视频| 高清一级淫片a级中文字幕| 精品视频在线观看免费| 九九久久99综合一区二区| a级黄色毛片免费播放视频| 久久国产影视免费精品| 精品国产一级毛片| 深夜做爰性大片中文| 国产美女在线观看| 日韩专区第一页|