最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇了解JSON與數(shù)據(jù)存儲基礎(chǔ)知識

 更新時間:2023年01月08日 11:07:44   作者:既白biu  
這篇文章主要介紹了JSON與數(shù)據(jù)存儲基礎(chǔ)知識,本篇文章較為基礎(chǔ),但非常詳細(xì),可以很好的理解JSON和數(shù)據(jù)存儲,,需要的朋友可以參考下

JSON

JSON的由來

在目前的開發(fā)中,JSON是一種非常重要的數(shù)據(jù)格式,它并不是編程語言,而是一種可以在服務(wù)器和客戶端之間傳輸?shù)臄?shù)據(jù)格式。

JSON的全稱是JavaScript Object Notation(JavaScript對象符號):

  • JSON是由Douglas Crockford構(gòu)想和設(shè)計的一種輕量級資料交換格式,算是JavaScript的一個子集;
  • 但是雖然JSON被提出來的時候是主要應(yīng)用JavaScript中,但是目前已經(jīng)獨立于編程語言,可以在各個編程語言中使用;
  • 很多編程語言都實現(xiàn)了將JSON轉(zhuǎn)成對應(yīng)模型的方式;

其他的傳輸格式:

  • XML:在早期的網(wǎng)絡(luò)傳輸中主要是使用XML來進(jìn)行數(shù)據(jù)交換的,但是這種格式在解析、傳輸?shù)雀鞣矫娑既跤贘SON,所以目前已經(jīng)很少在被使用了;
  • Protobuf:另外一個在網(wǎng)絡(luò)傳輸中目前已經(jīng)越來越多使用的傳輸格式是protobuf,但是直到2021年的3.x版本才支持JavaScript,所以目前在前端使用的較少;

目前JSON被使用的場景也越來越多:

  • 網(wǎng)絡(luò)數(shù)據(jù)的傳輸JSON數(shù)據(jù);
  • 項目的某些配置文件;
  • 非關(guān)系型數(shù)據(jù)庫(NoSQL)將json作為存儲格式

JSON的基本用法

JSON的頂層支持三種類型的值:

  • 簡單值:數(shù)字(Number)、字符串(String,不支持單引號)、布爾類型(Boolean)、null類型;
  • 對象值:由key、value組成,key是字符串類型,并且必須添加雙引號,值可以是簡單值、對象值、數(shù)組值;
  • 數(shù)組值:數(shù)組的值可以是簡單值、對象值、數(shù)組值

對象形式的JSON,每個對象屬性也必須是字符串,加上雙引號。

JSON序列化方法

某些情況下我們希望將JavaScript中的復(fù)雜類型轉(zhuǎn)化成JSON格式的字符串,這樣方便對其進(jìn)行處理:

  • 比如我們希望將一個對象保存到localStorage中;
  • 但是如果我們直接存放一個對象,這個對象會被轉(zhuǎn)化成 [object Object] 格式的字符串,并不是我們想要的結(jié)果

在ES5中引用了JSON全局對象,該對象有兩個常用的方法:

  • stringify方法:將JavaScript類型轉(zhuǎn)成對應(yīng)的JSON字符串;
  • parse方法:解析JSON字符串,轉(zhuǎn)回對應(yīng)的JavaScript類型;
let obj = {
    name: "cy",
    age: 18
}
let newObj = JSON.stringify(obj)
console.log(newObj); //{"name":"cy","age":18}-JSON形式的字符串
newObj = JSON.parse(newObj)
console.log(newObj);//{ name: 'cy', age: 18 }

JSON.stringify的參數(shù):

JSON.stringify的第一個參數(shù)傳入的是需要JSON序列化的對象,第二個參數(shù)傳入的是一個函數(shù)或者數(shù)組,如果傳入的是數(shù)組,那么僅僅會替換數(shù)組包含的屬性,如果傳入的是函數(shù),那么可以選擇性的替換值。第三個參數(shù)可傳入數(shù)字或者字符串,傳入數(shù)字的值為多少,就表示JSON序列化后里面的屬性前面的空格為多少,如果傳入的是字符串,則表示屬性前面以該字符串開頭。如下例:

const obj = {
    name: "why",
    age: 18,
    friends: {
        name: "kobe"
    },
    hobbies: ["籃球", "足球"],
    // toJSON: function() {
    //     return "123456"
    // }
}

// 需求: 將上面的對象轉(zhuǎn)成JSON字符串
// 1.直接轉(zhuǎn)化
const jsonString1 = JSON.stringify(obj)
console.log(jsonString1) //{"name":"why","age":18,"friends":{"name":"kobe"},"hobbies":["籃球","足球"]}

// 2.stringify第二個參數(shù)replacer
// 2.1. 傳入數(shù)組: 設(shè)定哪些是需要轉(zhuǎn)換
const jsonString2 = JSON.stringify(obj, ["name", "friends"])
console.log(jsonString2) //{"name":"why","friends":{"name":"kobe"}}

// 2.2. 傳入回調(diào)函數(shù):
const jsonString3 = JSON.stringify(obj, (key, value) => {
    if (key === "age") {
        return value + 1
    }
    return value
})
console.log(jsonString3) //{"name":"why","age":19,"friends":{"name":"kobe"},"hobbies":["籃球","足球"]}

// 3.stringify第三參數(shù) space
const jsonString4 = JSON.stringify(obj, null, "aaa")
console.log(jsonString4)
    // {
    //   aaa"name": "why",
    //   aaa"age": 18,
    //   aaa"friends": {
    //   aaaaaa"name": "kobe"
    //   aaa},
    //   aaa"hobbies": [
    //   aaaaaa"籃球",
    //   aaaaaa"足球"
    //   aaa]
    //   }

如果對象本身包含toJSON方法,那么會直接使用toJSON方法的結(jié)果。

數(shù)據(jù)存儲Storage

認(rèn)識Storage

WebStorage主要提供了一種機制,可以讓瀏覽器提供一種比cookie更直觀的key、value存儲方式:

  • localStorage:本地存儲,提供的是一種永久性的存儲方法,在關(guān)閉掉網(wǎng)頁重新打開時,存儲的內(nèi)容依然保留;
  • sessionStorage:會話存儲,提供的是本次會話的存儲,在關(guān)閉掉會話時,存儲的內(nèi)容會被清除

localStorage和sessionStorage

那么它們有什么區(qū)別呢?

驗證一:關(guān)閉網(wǎng)頁后重新打開,localStorage會保留,而sessionStorage會被刪除;
驗證二:在頁面內(nèi)實現(xiàn)跳轉(zhuǎn),localStorage會保留,sessionStorage也會保留;
驗證三:在頁面外實現(xiàn)跳轉(zhuǎn)(打開新的網(wǎng)頁),localStorage會保留,sessionStorage不會被保留

Storage的常見方法和屬性

Storage有如下的屬性和方法:

屬性:

Storage.length:只讀屬性 返回一個整數(shù),表示存儲在Storage對象中的數(shù)據(jù)項數(shù)量;

方法:

  • Storage.key():該方法接受一個數(shù)值n作為參數(shù),返回存儲中的第n個key名稱;
  • Storage.getItem():該方法接受一個key作為參數(shù),并且返回key對應(yīng)的value;
  • Storage.setItem():該方法接受一個key和value,并且將會把key和value添加到存儲中。如果key存儲,則更新其對應(yīng)的值;
  • Storage.removeItem():該方法接受一個key作為參數(shù),并把該key從存儲中刪除;
  • Storage.clear():該方法的作用是清空存儲中的所有key;
// 1.setItem
localStorage.setItem("name", "cy")
localStorage.setItem("age", 18)

// 2.length
console.log(localStorage.length)//2
for (let i = 0; i < localStorage.length; i++) {
    const key = localStorage.key(i)
    console.log(localStorage.getItem(key))
}
//18
//cy

// 3.key方法
console.log(localStorage.key(0))//age

// 4.getItem(key)
console.log(localStorage.getItem("age"))//18

// 5.removeItem
localStorage.removeItem("age")

// 6.clear方法
localStorage.clear()

以上就是一篇了解JSON與數(shù)據(jù)存儲基礎(chǔ)知識的詳細(xì)內(nèi)容,更多關(guān)于JSON與數(shù)據(jù)存儲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • json.stringify()與json.parse()的區(qū)別以及用處

    json.stringify()與json.parse()的區(qū)別以及用處

    這篇文章主要介紹了json.stringify()與json.parse()的區(qū)別以及用處,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • javascript json 新手入門文檔

    javascript json 新手入門文檔

    在異步應(yīng)用程序中發(fā)送和接收信息時,可以選擇以純文本和 XML 作為數(shù)據(jù)格式。掌握 Ajax 的這一期討論另一種有用的數(shù)據(jù)格式 JavaScript Object Notation(JSON),以及如何使用它更輕松地在應(yīng)用程序中移動數(shù)據(jù)和對象。
    2009-12-12
  • JSON.stringify 語法實例講解

    JSON.stringify 語法實例講解

    可能有些人對系列化這個詞過敏,我的理解很簡單。就是說把原來是對象的類型轉(zhuǎn)換成字符串類型(或者更確切的說是json類型的)。就這么簡單。打個比方說,你有一個類,那么你可以通過這個方法轉(zhuǎn)換成相應(yīng)的json類型的
    2012-03-03
  • JSON 和 JavaScript eval使用說明

    JSON 和 JavaScript eval使用說明

    JSON (JavaScript Object Notation) 一種輕量級的數(shù)據(jù)交換格式,比 XML 更輕巧,JSON 是JavaScript 原生格式,這意味著 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何 API 和工具包。
    2010-06-06
  • json編寫簡單一例

    json編寫簡單一例

    主要是了解一下json的簡單寫法與應(yīng)用,方便想學(xué)習(xí)json的朋友
    2008-08-08
  • Json對象替換字符串占位符實現(xiàn)代碼

    Json對象替換字符串占位符實現(xiàn)代碼

    實現(xiàn)根據(jù)提供的Json對象去替換字符串中相應(yīng)的占位符。需要的朋友可以參考下。
    2010-11-11
  • 把普通對象轉(zhuǎn)換成json格式的對象的簡單實例

    把普通對象轉(zhuǎn)換成json格式的對象的簡單實例

    下面小編就為大家?guī)硪黄哑胀▽ο筠D(zhuǎn)換成json格式的對象的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JSON 入門教程基礎(chǔ)篇 json入門學(xué)習(xí)筆記

    JSON 入門教程基礎(chǔ)篇 json入門學(xué)習(xí)筆記

    剛開始接觸json的時候感覺有點奇怪的命名,后來使用才發(fā)現(xiàn)這么簡單而且用好用,擴展性很強,這里就為大家整理一下
    2020-09-09
  • Javascript Jquery 遍歷Json的實現(xiàn)代碼

    Javascript Jquery 遍歷Json的實現(xiàn)代碼

    Javascript Jquery 遍歷Json的實現(xiàn)代碼,需要的朋友可以參考下。
    2010-03-03
  • JSON 編輯器實現(xiàn)代碼

    JSON 編輯器實現(xiàn)代碼

    用來簡單的查看、輔助修改繁雜的JSON數(shù)據(jù),格式化或者壓縮JJSON,當(dāng)然也可以自由即時編輯一些簡單的JSON數(shù)據(jù)。
    2009-12-12

最新評論

南昌市| 民县| 黔南| 武穴市| 东方市| 大悟县| 文登市| 阿坝县| 拉孜县| 武强县| 沈丘县| 永福县| 曲松县| 安西县| 武清区| 微博| 开化县| 双牌县| 榕江县| 洱源县| 古田县| 垦利县| 商丘市| 商城县| 崇明县| 忻州市| 和顺县| 陇西县| 沙坪坝区| 青龙| 富蕴县| 浦北县| 原阳县| 七台河市| 达拉特旗| 盐池县| 荆门市| 延庆县| 青川县| 玉环县| 柞水县|