日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

原来JSON还可这样玩着

發(fā)布時(shí)間:2023/12/18 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原来JSON还可这样玩着 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JOSN

JSON是一種數(shù)據(jù)格式,是JavaScript Object? Notation的縮寫(xiě)。JSON作為JavaScript的一個(gè)嚴(yán)格子集,使用了JavaScript中的一些模式來(lái)表示結(jié)構(gòu)化數(shù)據(jù)。

? 簡(jiǎn)單值:使用與JavaScript相同的語(yǔ)法,可以在JSON中表示字符串、數(shù)值、布爾值和null。但JSON不支持JavaScript中的特殊值undefined。? 對(duì)象:對(duì)象作為一種復(fù)雜數(shù)據(jù)類(lèi)型,表示的是一組無(wú)序的鍵值對(duì)兒。而每個(gè)鍵值對(duì)兒中的值可以是簡(jiǎn)單值,也可以是復(fù)雜數(shù)據(jù)類(lèi)型的值。? 數(shù)組:數(shù)組也是一種復(fù)雜數(shù)據(jù)類(lèi)型,表示一組有序的值的列表,可以通過(guò)數(shù)值索引來(lái)訪(fǎng)問(wèn)其中的值。數(shù)組的值也可以是任意類(lèi)型——簡(jiǎn)單值、對(duì)象或數(shù)組。

?

JSON不支持變量、函數(shù)或者對(duì)象實(shí)例。雖然JSON看起來(lái)和對(duì)象有點(diǎn)相似,但是有幾點(diǎn)區(qū)別之處:

1、JSON中沒(méi)有變量的概念,所以在JSON中不能聲明變量;

2、JOSN末尾沒(méi)有分號(hào);

3、JSON中的屬性必須加上雙引號(hào)。

?

JSON的兩個(gè)方法

1、JSON.stringify(),把JavaScript對(duì)象轉(zhuǎn)化為JSON字符串,在轉(zhuǎn)化的過(guò)程中,對(duì)象里的函數(shù)或者原型成員都會(huì)被忽略,屬性值為undefined的屬性也會(huì)被跳過(guò);

JSON.stringify()接受三個(gè)參數(shù):

必選:需要序列化的JavaScript對(duì)象;

過(guò)濾器【可選】:可以是數(shù)組、函數(shù);

可選:表示是否在JSON字符串中保留縮進(jìn)。

const _json = {name:"讀心悅",age:28 }const _json1 = JSON.stringify(_json,["name"]) console.log(_json);console.log(_json1)

如果過(guò)濾器是一個(gè)數(shù)組,數(shù)組中每一項(xiàng)要和將要序列化的對(duì)象中屬性一一對(duì)應(yīng),這樣在返回的結(jié)果字符串中只會(huì)包含對(duì)應(yīng)的屬性。

如果過(guò)濾器是一個(gè)函數(shù),那么這個(gè)函數(shù)接收兩個(gè)參數(shù):屬性名和屬性值,函數(shù)根據(jù)屬性名來(lái)判斷如何處理需要序列化的對(duì)象中哪些屬性。

const _json = {name: "讀心悅",lat:"",age: 28,mon: [120, 234, 31, 654, 90] } const _json1 = JSON.stringify(_json, function (key, value) {switch (key) {case "name":return value;case "age":return value;case "mon":return value.join(",");case "lat":return "暫時(shí)未定位";default:return value;} }) console.log(_json);console.log(_json1)

?

JSON.stringify()的第三個(gè)參數(shù):控制JSON字符串中的縮進(jìn)和空白符,如下每一項(xiàng)要縮進(jìn)4個(gè)空格;

const _json = {name: "讀心悅",lat:"",age: 28,mon: [120, 234, 31, 654, 90] } const _json1 = JSON.stringify(_json,null,4) console.log(_json1)

打印的結(jié)果:

{"name": "讀心悅","lat": "","age": 28,"mon": [120,234,31,654,90] }

?

這個(gè)參數(shù)最大值為10個(gè)縮進(jìn)空格,當(dāng)設(shè)置的值大于10的時(shí)候,會(huì)自動(dòng)轉(zhuǎn)化為10。

const _json1 = JSON.stringify(_json,null,100) {"name": "讀心悅","lat": "","age": 28,"mon": [120,234,31,654,90] }

?

另外,還有一個(gè)方法:toJSON(),這個(gè)方法是返回自身的JSON數(shù)據(jù)格式。可以給任何對(duì)象添加toJSON方的。

const _json = {name: "讀心悅",lat:"",age: 28,mon: [120, 234, 31, 654, 90],toJSON:function(){return this.name} } const _json1 = JSON.stringify(_json) console.log(_json1); // "讀心悅"

如果給JSON.stringify()傳入一個(gè)對(duì)象,那么在序列化該對(duì)象的順序如下:

(1) 如果存在toJSON()方法而且能通過(guò)它取得有效的值,則調(diào)用該方法。否則,返回對(duì)象本身。

(2) 如果提供了第二個(gè)參數(shù),應(yīng)用這個(gè)函數(shù)過(guò)濾器。傳入函數(shù)過(guò)濾器的值是第(1)步返回的值。

(3) 對(duì)第(2)步返回的每個(gè)值進(jìn)行相應(yīng)的序列化。

(4) 如果提供了第三個(gè)參數(shù),執(zhí)行相應(yīng)的格式化。

?

?

2、JSON.parse(),把JSON字符串轉(zhuǎn)化為相應(yīng)的JavaScript的值,如果傳給JSON.parse()的字符串不是有效的JSON,就會(huì)拋出異常。其實(shí)JSON.parse()方法可以說(shuō)是JSON.stringify()的還原函數(shù)。除了接收一個(gè)JSON字符串之外,也可以接收另一個(gè)參數(shù),是一個(gè)函數(shù):

const _json = {name: "讀心悅",lat: "",age: 28,mon: [120, 234, 31, 654, 90],test: {name: "青竹心"}, } const _json1 = JSON.stringify(_json) const _json2 = JSON.parse(_json1, function (key, value) {if(key=="name"){console.log("909090")} }) console.log(_json2);

如果還原函數(shù)返回undefined,則表示要從結(jié)果中刪除相應(yīng)的鍵;如果返回其他值,則將該值插入到結(jié)果中

?

?

總結(jié)

以上是生活随笔為你收集整理的原来JSON还可这样玩着的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。