日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

原来JSON还可这样玩着

發布時間:2023/12/18 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原来JSON还可这样玩着 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JOSN

JSON是一種數據格式,是JavaScript Object? Notation的縮寫。JSON作為JavaScript的一個嚴格子集,使用了JavaScript中的一些模式來表示結構化數據。

? 簡單值:使用與JavaScript相同的語法,可以在JSON中表示字符串、數值、布爾值和null。但JSON不支持JavaScript中的特殊值undefined。? 對象:對象作為一種復雜數據類型,表示的是一組無序的鍵值對兒。而每個鍵值對兒中的值可以是簡單值,也可以是復雜數據類型的值。? 數組:數組也是一種復雜數據類型,表示一組有序的值的列表,可以通過數值索引來訪問其中的值。數組的值也可以是任意類型——簡單值、對象或數組。

?

JSON不支持變量、函數或者對象實例。雖然JSON看起來和對象有點相似,但是有幾點區別之處:

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

2、JOSN末尾沒有分號;

3、JSON中的屬性必須加上雙引號。

?

JSON的兩個方法

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

JSON.stringify()接受三個參數:

必選:需要序列化的JavaScript對象;

過濾器【可選】:可以是數組、函數;

可選:表示是否在JSON字符串中保留縮進。

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

如果過濾器是一個數組,數組中每一項要和將要序列化的對象中屬性一一對應,這樣在返回的結果字符串中只會包含對應的屬性。

如果過濾器是一個函數,那么這個函數接收兩個參數:屬性名和屬性值,函數根據屬性名來判斷如何處理需要序列化的對象中哪些屬性。

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 "暫時未定位";default:return value;} }) console.log(_json);console.log(_json1)

?

JSON.stringify()的第三個參數:控制JSON字符串中的縮進和空白符,如下每一項要縮進4個空格;

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

打印的結果:

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

?

這個參數最大值為10個縮進空格,當設置的值大于10的時候,會自動轉化為10。

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

?

另外,還有一個方法:toJSON(),這個方法是返回自身的JSON數據格式。可以給任何對象添加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()傳入一個對象,那么在序列化該對象的順序如下:

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

(2) 如果提供了第二個參數,應用這個函數過濾器。傳入函數過濾器的值是第(1)步返回的值。

(3) 對第(2)步返回的每個值進行相應的序列化。

(4) 如果提供了第三個參數,執行相應的格式化。

?

?

2、JSON.parse(),把JSON字符串轉化為相應的JavaScript的值,如果傳給JSON.parse()的字符串不是有效的JSON,就會拋出異常。其實JSON.parse()方法可以說是JSON.stringify()的還原函數。除了接收一個JSON字符串之外,也可以接收另一個參數,是一個函數:

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);

如果還原函數返回undefined,則表示要從結果中刪除相應的鍵;如果返回其他值,則將該值插入到結果中

?

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。