摘要:簡介是對象表示法的縮寫是一種數據格式而不是一種編程語言用來表示結構化數據是的一個嚴格子集并不從屬于很多編程語言都可以用數據格式語法語法可以表示以下三種類型的值簡單值字符串數值布爾值但是不支持對象數組不支持變量函數對象實例簡單值字符串數字布爾
JSON 簡介
JSON是JavaScript Object Notation(JavaScript對象表示法)的縮寫
JSON是一種數據格式, 而不是一種編程語言, 用來表示結構化數據
JSON是JavaScript的一個嚴格子集
JSON并不從屬于JavaScript, 很多編程語言都可以用JSON數據格式
語法JSON語法可以表示以下三種類型的值:
簡單值: 字符串/數值/布爾值/null, 但是不支持undefined
對象
數組
JSON不支持變量/函數/對象實例
簡單值字符串
"Hello JSON"
數字
66
布爾值
true
null
null對象
和JavaScript對比來看 ->
JavaScript表示對象
鍵值對的鍵可以加引號也可以不加, 如果加引號, 可以加單引號也可以加雙引號
// 最常見就這么寫 const obj1 = { foo: "bar", num: 66, status: true }; // 這么寫也oconstet obj2 = { "foo": "bar", "num": 66, "status": true }; // 這么寫也ok const obj1 = { "foo": "bar", "num": 66, "status": true };
JSON表示對象
鍵值對的鍵必須加雙引號(手寫JSON時一定要注意)
對象沒有變量聲明, 因為JSON根本就沒有變量的概念(它不是一個編程語言)
末尾沒有分號
{ "foo": "bar", "num": 66, "status": true }
和JavaScript相似, 對象可以嵌套對象
{ "foo": "bar", "num": 66, "status": true, "baz": { "num": 88 } }
注, 同名屬性可以在不同的對象中, 但是不能出現在同一個對象中
數組和JavaScript對比來看 ->
JavaScript表示數組
let arr = ["hello", 66, true];
JSON表示數組
同樣沒有變量聲明和結尾的分號, 同時注意字符串簡單值要加雙引號
["hello", 66, true]
數組和對象結合起來可以構成復雜的集合, 比如students.json文件中可能是這樣嬸兒的
[ { "name": "小明", "age": 10, "score": { "math": 88, "english": 99 } }, { "name": "小強", "age": 11, "score": { "math": 98, "english": 96 } } ]
看到以上同JavaScript的不同之處, 我們可以知道為什么說JSON是JavaScript的一個嚴格子集了吧
JSON序列化與解析 基本用法ECMAScript5定義了全局對象JSON, 用來解析JSON字符串
簡單來說, JSON對象有兩個方法
JSON.stringify(): 把JavaScript對象序列化為JSON字符串
JSON.parse(): 把JSON字符串解析為原生JavaScript值
const book = { name: "Learn JavaScript in One Day", pages: 1 }; const jsonText = JSON.stringify(book); // 序列化 // "{"name":"Learn JavaScript in One Day","pages":1}" const parseText = JSON.parse(jsonText); // 解析 // {name: "Learn JavaScript in One Day", pages: 1}
默認情況下, JSON.stringify()輸出的JSON字符串不包含任何空格字符或縮進(是不是給我們提供了一種將去除數據中無用的空白和縮進的方法呢).
在序列化JavaScript對象時, 所有函數及原型成員都會被有意忽略, 不體現在結果中. 此外, 值為undefined的任何屬性也都會被跳過. 結果中最終都是值為有效JSON數據類型的實例屬性.
const book = { name: "Learn JavaScript in One Day", pages: 1, foo: undefined }; const jsonText = JSON.stringify(book); // 序列化 // "{"name":"Learn JavaScript in One Day","pages":1}" // foo的值為undefined, 所被忽略掉了
將JSON字符串直接傳遞給JSON.parse()就可以得到相應的JavaScript值.
JSON.parse()就是JSON.stringify()的逆向操作. 將一個JavaScript值序列化之后再解析JSON.parse(JSON.stringify(foo))和原來的foo幾乎一樣.
注意, 為什么說是幾乎一樣呢?
如果foo是一個對象或數組, 那么這么一折騰就變成了兩個不同的對象或數組了;
這就提供了一種克隆對象和數組的方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103341.html
摘要:此外,與訓練機器學習模型的作業相比,作業具有不同的執行配置文件。此外,還制作了一個界面,以便控制機器學習的參數指定用于訓練的數據量等。 摘要: 一份機器學習過來人的經驗清單分享,主要是包含一些關于構建機器學習工作流以及Apache Spark應該注意的一些事項,希望這個清單能夠幫助那些正在學習機器學習的相關人員少走一些彎路,節約一些時間。 showImg(https://segment...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現代應用,的大量使用,使得前端工程師們日常的開發少不了拼裝模板,渲染模板。我們今天就來聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現代應用,的大量使用,使得前端工程師們日常的開發少不了拼裝模板,渲染模板。我們今天就來聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...
閱讀 1352·2021-09-24 10:26
閱讀 3664·2021-09-06 15:02
閱讀 616·2019-08-30 14:18
閱讀 581·2019-08-30 12:44
閱讀 3124·2019-08-30 10:48
閱讀 1946·2019-08-29 13:09
閱讀 2001·2019-08-29 11:30
閱讀 2288·2019-08-26 13:36