摘要:簡(jiǎn)介是對(duì)象表示法的縮寫(xiě)是一種數(shù)據(jù)格式而不是一種編程語(yǔ)言用來(lái)表示結(jié)構(gòu)化數(shù)據(jù)是的一個(gè)嚴(yán)格子集并不從屬于很多編程語(yǔ)言都可以用數(shù)據(jù)格式語(yǔ)法語(yǔ)法可以表示以下三種類(lèi)型的值簡(jiǎn)單值字符串?dāng)?shù)值布爾值但是不支持對(duì)象數(shù)組不支持變量函數(shù)對(duì)象實(shí)例簡(jiǎn)單值字符串?dāng)?shù)字布爾
JSON 簡(jiǎn)介
JSON是JavaScript Object Notation(JavaScript對(duì)象表示法)的縮寫(xiě)
JSON是一種數(shù)據(jù)格式, 而不是一種編程語(yǔ)言, 用來(lái)表示結(jié)構(gòu)化數(shù)據(jù)
JSON是JavaScript的一個(gè)嚴(yán)格子集
JSON并不從屬于JavaScript, 很多編程語(yǔ)言都可以用JSON數(shù)據(jù)格式
語(yǔ)法JSON語(yǔ)法可以表示以下三種類(lèi)型的值:
簡(jiǎn)單值: 字符串/數(shù)值/布爾值/null, 但是不支持undefined
對(duì)象
數(shù)組
JSON不支持變量/函數(shù)/對(duì)象實(shí)例
簡(jiǎn)單值字符串
"Hello JSON"
數(shù)字
66
布爾值
true
null
null對(duì)象
和JavaScript對(duì)比來(lái)看 ->
JavaScript表示對(duì)象
鍵值對(duì)的鍵可以加引號(hào)也可以不加, 如果加引號(hào), 可以加單引號(hào)也可以加雙引號(hào)
// 最常見(jiàn)就這么寫(xiě) const obj1 = { foo: "bar", num: 66, status: true }; // 這么寫(xiě)也oconstet obj2 = { "foo": "bar", "num": 66, "status": true }; // 這么寫(xiě)也ok const obj1 = { "foo": "bar", "num": 66, "status": true };
JSON表示對(duì)象
鍵值對(duì)的鍵必須加雙引號(hào)(手寫(xiě)JSON時(shí)一定要注意)
對(duì)象沒(méi)有變量聲明, 因?yàn)镴SON根本就沒(méi)有變量的概念(它不是一個(gè)編程語(yǔ)言)
末尾沒(méi)有分號(hào)
{ "foo": "bar", "num": 66, "status": true }
和JavaScript相似, 對(duì)象可以嵌套對(duì)象
{ "foo": "bar", "num": 66, "status": true, "baz": { "num": 88 } }
注, 同名屬性可以在不同的對(duì)象中, 但是不能出現(xiàn)在同一個(gè)對(duì)象中
數(shù)組和JavaScript對(duì)比來(lái)看 ->
JavaScript表示數(shù)組
let arr = ["hello", 66, true];
JSON表示數(shù)組
同樣沒(méi)有變量聲明和結(jié)尾的分號(hào), 同時(shí)注意字符串簡(jiǎn)單值要加雙引號(hào)
["hello", 66, true]
數(shù)組和對(duì)象結(jié)合起來(lái)可以構(gòu)成復(fù)雜的集合, 比如students.json文件中可能是這樣?jì)饍旱?/p>
[ { "name": "小明", "age": 10, "score": { "math": 88, "english": 99 } }, { "name": "小強(qiáng)", "age": 11, "score": { "math": 98, "english": 96 } } ]
看到以上同JavaScript的不同之處, 我們可以知道為什么說(shuō)JSON是JavaScript的一個(gè)嚴(yán)格子集了吧
JSON序列化與解析 基本用法ECMAScript5定義了全局對(duì)象JSON, 用來(lái)解析JSON字符串
簡(jiǎn)單來(lái)說(shuō), JSON對(duì)象有兩個(gè)方法
JSON.stringify(): 把JavaScript對(duì)象序列化為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}
默認(rèn)情況下, JSON.stringify()輸出的JSON字符串不包含任何空格字符或縮進(jìn)(是不是給我們提供了一種將去除數(shù)據(jù)中無(wú)用的空白和縮進(jìn)的方法呢).
在序列化JavaScript對(duì)象時(shí), 所有函數(shù)及原型成員都會(huì)被有意忽略, 不體現(xiàn)在結(jié)果中. 此外, 值為undefined的任何屬性也都會(huì)被跳過(guò). 結(jié)果中最終都是值為有效JSON數(shù)據(jù)類(lèi)型的實(shí)例屬性.
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()就可以得到相應(yīng)的JavaScript值.
JSON.parse()就是JSON.stringify()的逆向操作. 將一個(gè)JavaScript值序列化之后再解析JSON.parse(JSON.stringify(foo))和原來(lái)的foo幾乎一樣.
注意, 為什么說(shuō)是幾乎一樣呢?
如果foo是一個(gè)對(duì)象或數(shù)組, 那么這么一折騰就變成了兩個(gè)不同的對(duì)象或數(shù)組了;
這就提供了一種克隆對(duì)象和數(shù)組的方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103341.html
摘要:此外,與訓(xùn)練機(jī)器學(xué)習(xí)模型的作業(yè)相比,作業(yè)具有不同的執(zhí)行配置文件。此外,還制作了一個(gè)界面,以便控制機(jī)器學(xué)習(xí)的參數(shù)指定用于訓(xùn)練的數(shù)據(jù)量等。 摘要: 一份機(jī)器學(xué)習(xí)過(guò)來(lái)人的經(jīng)驗(yàn)清單分享,主要是包含一些關(guān)于構(gòu)建機(jī)器學(xué)習(xí)工作流以及Apache Spark應(yīng)該注意的一些事項(xiàng),希望這個(gè)清單能夠幫助那些正在學(xué)習(xí)機(jī)器學(xué)習(xí)的相關(guān)人員少走一些彎路,節(jié)約一些時(shí)間。 showImg(https://segment...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現(xiàn)代應(yīng)用,的大量使用,使得前端工程師們?nèi)粘5拈_(kāi)發(fā)少不了拼裝模板,渲染模板。我們今天就來(lái)聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現(xiàn)代應(yīng)用,的大量使用,使得前端工程師們?nèi)粘5拈_(kāi)發(fā)少不了拼裝模板,渲染模板。我們今天就來(lái)聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...
閱讀 1393·2021-09-24 10:26
閱讀 3701·2021-09-06 15:02
閱讀 665·2019-08-30 14:18
閱讀 601·2019-08-30 12:44
閱讀 3141·2019-08-30 10:48
閱讀 1971·2019-08-29 13:09
閱讀 2027·2019-08-29 11:30
閱讀 2309·2019-08-26 13:36