JSON格式

JSON是什么

JSON ( JavaScript Object Notation) ,是一種數(shù)據(jù)交互格式。


為什么有這個(gè)技術(shù)

Json之前,大家都用 XML 傳遞數(shù)據(jù)。XML 是一種純文本格式,所以適合在網(wǎng)絡(luò)上交換數(shù)據(jù),但是 XML 格式比較復(fù)雜,終于道格拉斯·克羅克福特(Douglas Crockford)發(fā)明了JSON 這種超輕量級(jí)的數(shù)據(jù)交換格式。


相比 XML 的不同之處

  • 沒有結(jié)束標(biāo)簽
  • 更短
  • 讀寫的速度更快
  • 能夠使用內(nèi)建的 JavaScript eval() 方法進(jìn)行解析
  • 使用數(shù)組
  • 不使用保留字

JSON 如何使用

- 數(shù)據(jù)格式

JSON 實(shí)際上是 JavaScript 的一個(gè)子集,所以JSON 的數(shù)據(jù)格式和 JavaScript 是對(duì)應(yīng)的:

- number => JS number 
- boolean => JS boolean
- string => JS string //
- null => JS null 
- array => JS Array 的表達(dá)方式 []
- object => JS {} 表達(dá)式

- 注意事項(xiàng)

  • JSON 規(guī)定字符集是UTF-8,字符串必須使用"",Object 的鍵也必須使用""
  • 數(shù)組或?qū)ο蟮淖詈笠粋€(gè)成員,不能加逗號(hào)

- JSON 語法規(guī)則

JSON 語法是 JavaScript 對(duì)象表示法語法的子集。

  • 數(shù)據(jù)在名稱/值對(duì)中
  • 數(shù)據(jù)由逗號(hào)分隔
  • 花括號(hào)保存對(duì)象
  • 方括號(hào)保存數(shù)組

- JSON 名稱/值對(duì)

JSON 數(shù)據(jù)的書寫格式是:名稱/值對(duì)。

名稱/值對(duì)包括字段名稱(在雙引號(hào)中),后面寫一個(gè)冒號(hào),然后是值:

"firstName" : "John"

這很容易理解,等價(jià)于這條 JavaScript 語句:

firstName = "John"

- JSON 值

JSON 值可以是:

  • 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
  • 字符串(在雙引號(hào)中)
  • 邏輯值(true 或 false)
  • 數(shù)組(在方括號(hào)中)
  • 對(duì)象(在花括號(hào)中)
  • null

- JSON 對(duì)象

JSON 對(duì)象在花括號(hào)中書寫:

對(duì)象可以包含多個(gè)名稱/值對(duì):

{ "firstName":"John" , "lastName":"Doe" }

這一點(diǎn)也容易理解,與這條 JavaScript 語句等價(jià):

firstName = "John"
lastName = "Doe"

- JSON 數(shù)組

JSON 數(shù)組在方括號(hào)中書寫:

數(shù)組可包含多個(gè)對(duì)象:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

在上面的例子中,對(duì)象 "employees" 是包含三個(gè)對(duì)象的數(shù)組。每個(gè)對(duì)象代表一條關(guān)于某人(有姓和名)的記錄。

- JS 內(nèi)置兩個(gè)Json方法

JSON.stringify( {} , [ ] , "")
//參數(shù)一 :要序列化的數(shù)據(jù)(object)
//參數(shù)二 :控制對(duì)象的鍵值,只想輸出指定的屬性,傳入一個(gè)數(shù)組
//參數(shù)三 :序列化后,打印輸出的格式(一個(gè)Tab ,可以更直觀查看json)

任何把 JavaScript 變成 Json ,就是把這個(gè)對(duì)象序列化為Json字符串,然后才可以通過網(wǎng)絡(luò)傳遞;
收到一個(gè)Json格式的字符串,

JSON.parse( json.DATA ) //傳入json字符串 

如果我們收到一個(gè)JSON格式的字符串,只需要把它反序列化成一個(gè)JavaScript對(duì)象,就可以在JavaScript中直接使用這個(gè)對(duì)象了。


實(shí)例:

1.數(shù)組方式 [ ]

[{
"id" : 1 ,
"name" : "xiaoming"
},{
"id" : 2 , 
"name" : "xiaohong"
}]

2.對(duì)象方式 { }

//前后端分離,推薦后端返回給前端數(shù)據(jù)格式
{
"status" : 0 ,          //執(zhí)行狀態(tài)碼
"msg"    : "SUCCESS",   //說明文字信息,沒有為NULL
"data"   :[{            //對(duì)象中嵌套數(shù)組,數(shù)組是返回的數(shù)據(jù),
"id"    : 1 ,
"name"  : "xiaohong"
},{
"id"    : 2,
"name"  : "xiaoming"
}]
}

3.反例

{"id" : ox16 } //不合法,數(shù)值需要是十進(jìn)制
{"name" : underfined } //不合法,沒有該值
[{
"name" : NUll,
"school" : function() {
console.log("該寫法是錯(cuò)誤的")
}//不合法
}]//json中不能使用自定義函數(shù),或系統(tǒng)內(nèi)置函數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容