JSON學習整理

  這兩天在學習Angular,順便複習了一下JSON的使用方法。。 雖然感受JSON很簡單,可是每次想描述一下的時候又經常找不到詞形容,仍是練的太少。。javascript

此次再也不是用本子記筆記,而是用word進行了整理,用Brackets來練習代碼,邊記邊練,之後會放棄使用本子來記,發覺抄寫了兩本本子以後,不少內容仍是沒記住。   java

 

 

JSON學習筆記

JavaScript Object Notation  js對象表示法json

它是輕量級的文本數據交換格式,獨立於語言*,具備自我描述性,更容易理解,json使用js語法來描述數據對象,可是json仍然獨立於語言和平臺,json解釋器和json庫支持不少不一樣的編譯語言,目前很是多的動態編譯語言都支持json。數組

 

JSON - 轉換爲 JavaScript 對象

JSON文本格式在語法上與建立js對象的代碼相同,服務器

因爲這種類似性,無需解析器,js程序可以使用eval()函數,用json數據來生成原生的js對象函數

 

JSON 語法規則

數據在 名稱/值 對中  包含在雙引號之中工具

數據由逗號分隔學習

大括號保存對象url

中括號保存數組spa

例如json:"name" : "菜鳥教程" 等價於js中這樣書寫:  name = "菜鳥教程";

 

JSON 值:

能夠是 數字,字符串,邏輯值,數組,對象,null

 

 

數字:    { 「age」 : 30 }

對象:   { "name":"菜鳥教程" , "url":"www.runoob.com" }

數組: 

 Sites是包含了三個對象的數組,每個對象有本身的name和url屬性

 

 

JSON 使用 JavaScript 語法

  由於 JSON 使用 JavaScript 語法,因此無需解析器就能處理js中的json。

 

 

這樣就能夠訪問sites中的每一個對象的屬性。   Sites[0].name;

 

也能夠對json數據進行修改。

 

JSON 對象

對象語法  {「name」:」runoob」 , 「alexa」:1000,」site」null}

Json對象使用在大括號中書寫,能夠包含多個鍵值對,key必須是字符串,value是合法的json數據類型,key和value用冒號分割,每一個鍵值對中間用逗號分割。

可使用 .  來訪問對象的值,也可使用中括號來訪問對象的值,中括號之間是key,必須是字符串

可使用for-in 來循環對象屬性:

var myObj = { "name":"runoob", "alexa":10000, "site":null };

 for (x in myObj) { document.getElementById("demo").innerHTML += x + "<br>"; }

循環對象的屬性時,使用中括號[]來訪問屬性的值:

由於循環的時候x實際上指的是key,是字符串,因此不能直接用 . 來訪問key的值

 

嵌套 JSON 對象

JSON 對象中能夠包含另一個 JSON 對象:

 

 

一樣能夠修改對象對應屬性的值,而且能夠用delete來刪除對象的屬性

JSON 數組

使用數組最爲json對象:

Var  oJson = [「xxx」,」xxx」,」xxx」];

數組必須在中括號中書寫,數組中的值必須是合法的json數據類型(數值,字符串,布朗,對象,數組或者null)

可使用索引來訪問數組還有數組,對象中的數組。

也可使用for-in 來循環數組

JSON.parse()

JSON經常使用於與服務端交換數據,在接受服務器數據時通常是字符串

咱們可使用JSON.parse()方法將數據轉化爲js對象

語法: JSON.parse(text[,reviver])   text必須是一個有效地JSON字符串

在線工具檢測:https://c.runoob.com/front-end/53

Reviver可選,一個轉換結果的函數,將爲對象的每一個成員調用此函數。

 

從服務端接收 JSON 數據

若是從服務端接收的是數組的 JSON 數據,則 JSON.parse 會將其轉換爲 JavaScript 數組

 

 

JSON不能儲存Date對象,若是你要儲存Date對象,須要將其轉化爲字符串,以後再講字符串轉化爲Date對象,時間對象

咱們能夠啓用JSON的第二個參數 reviver,一個轉化結果的函數,對象的每一個成員調用該函數

 

 

 

解析函數

JSON不容許包含函數,可是你能夠把函數做爲字符串儲存,而後再用eval()將字符串解析爲函數。

 

 

JSON.stringify()

JSON 一般用於與服務端交換數據。

在向服務器發送數據時通常是字符串。

咱們可使用 JSON.stringify() 方法將 JavaScript 對象轉換爲字符串

簡單來講就是會把js對象轉化爲等價的JSON字符串

var foo = {bar:"new property",baz:3};
var jsonString = JSON.stringify(foo);
console.log(jsonString);//{"bar":"new property","baz":3}

 

語法:

JSON.stringify(value[, replacer[, space]])

value:

必需, 一個有效的 JSON 字符串。

replacer:

可選。用於轉換結果的函數或數組。

該參數能夠是多種類型,若是是一個函數,則它能夠改變一個javascript對象在字符串化過程當中的行爲, 若是是一個包含 String 和 Number 對象的數組,則它將做爲一個白名單.只有那些鍵存在域該白名單中的鍵值對纔會被包含進最終生成的JSON字符串中.若是該參數值爲null或者被省略,則全部的鍵值對都會被包含進最終生成的JSON字符串中

space:

可選,文本添加縮進、空格和換行符,若是 space 是一個數字,則返回值文本在每一個級別縮進指定數目的空格,若是 space 大於 10,則文本縮進 10 個空格。space 有可使用非數字,如:\t。

例以下面:

 

 

 

 

最後一個參數,space能夠用來dump對象,將複雜的對象直觀清晰地顯示出來,例如:

 

 

 

結果很是清晰~!

 

 

JSON 不能存儲 Date 對象。

JSON.stringify() 會將全部日期轉換爲字符串。

解析函數

JSON 不容許包含函數,JSON.stringify() 會刪除 JavaScript 對象的函數,包括 key 和 value。

咱們能夠在執行 JSON.stringify() 函數前將函數轉換爲字符串來避免以上問題的發生

相關文章
相關標籤/搜索