JSON數據交換格式
JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基于 ECMAScript (歐洲計算機協會制定的js規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
JSON是Douglas Crockford在2001年開始推廣使用的數據格式,在2005年-2006年正式成為主流的數據格式,雅虎和谷歌就在那時候開始廣泛地使用JSON格式。
JSON 語法規則
JSON是一個標記符的序列。這套標記符包含六個構造字符、字符串、數字和三個字面名。
JSON是一個序列化的對象或數組。
1. 六個構造字符:
begin-array = ws %x5B ws ; [ 左方括號
begin-object = ws %x7B ws ; { 左大括號
end-array = ws %x5D ws ; ] 右方括號
end-object = ws %x7D ws ; } 右大括號
name-separator = ws %x3A ws ; : 冒號
value-separator = ws %x2C ws ; , 逗號
2. 在這六個構造字符的前或后允許存在無意義的空白符(ws):
ws = *(%x20 /; 空間
%x09 /; 水平標簽
%x0A /; 換行或換行
%x0D); 回程
3.JSON的值:
3.1 JSON的構成: ws 值 ws [1]
3.2值可以是對象、數組、數字、字符串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。
3.2.1對象由花括號括起來的逗號分割的成員構成,成員是字符串鍵和上文所述的值由逗號分割的鍵值對組成,如:
1 {“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}
3.2.2數組是由方括號括起來的一組值構成,如:
1[3, 1, 4, 1, 5, 9, 2, 6]
3.2.3 字符串與C或者Java的字符串非常相似。字符串是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。
3.2.4數字也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節。 [2]
一些合法的JSON的實例:
1{“a”: 1, “b”: [1, 2, 3]}
1[1, 2, “3”, {“a”: 4}]
13.14
1“plain_text”
JSON 與 JS 對象的關系
很多人搞不清楚 JSON 和 JS 對象的關系,甚至連誰是誰都不清楚。其實,可以這么理解:
JSON 是 JS 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質是一個字符串。
如
1var obj = {a: ‘Hello’, b: ‘World’}; //這是一個對象,注意鍵名也是可以使用引號包裹的
1var json = ‘{“a”: “Hello”, “b”: “World”}’; //這是一個 JSON 字符串,本質是一個字符串
JSON 和 JS 對象互轉
要實現從JSON字符串轉換為JS對象,使用 JSON.parse() 方法:
1var obj = JSON.parse(‘{“a”: “Hello”, “b”: “World”}’); //結果是 {a: ‘Hello’, b: ‘World’}
要實現從JS對象轉換為JSON字符串,使用 JSON.stringify() 方法:
1var json = JSON.stringify({a: ‘Hello’, b: ‘World’}); //結果是 ‘{“a”: “Hello”, “b”: “World”}’
編輯:jq
-
數據
+關注
關注
8文章
7139瀏覽量
89581 -
JS
+關注
關注
0文章
78瀏覽量
18176 -
JSON
+關注
關注
0文章
119瀏覽量
7011
原文標題:JSON數據交換格式
文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
配置Skywalking告警
![配置Skywalking告警](https://file1.elecfans.com/web3/M00/06/36/wKgZO2eIdk-ABPyvAAAe4LpFel4047.png)
think-cell——使用JSON數據實現自動化(二)
![think-cell——使用<b class='flag-5'>JSON</b>數據實現自動化(二)](https://file1.elecfans.com/web3/M00/04/A9/wKgZPGd3SCqAIpRXAAAwfAOo7zE220.png)
think-cell——使用JSON數據實現自動化(一)
![think-cell——使用<b class='flag-5'>JSON</b>數據實現自動化(一)](https://file1.elecfans.com/web3/M00/04/8A/wKgZPGd2JyaAF1LTAAAwCZsElnc512.png)
遠程IO控制器ZLAN6808-3 使用JSON定時下發執行DO通斷
![遠程IO控制器ZLAN6808-3 使用<b class='flag-5'>JSON</b>定時下發執行DO通斷](https://file1.elecfans.com/web1/M00/F3/C7/wKgaoWce6qGAR_ncAAFG3jQX3Zg86.jpeg)
JSON協議是什么,物聯網中的RTU中如何使用JSON協議和服務器交互
![<b class='flag-5'>JSON</b>協議是什么,物聯網中的RTU中如何使用<b class='flag-5'>JSON</b>協議和服務器交互](https://file1.elecfans.com//web2/M00/07/F1/wKgZombzxmuAEibqAAAaD3qYSfA535.jpg)
TestStand表達式中常用的語法規則和運算符使用
![TestStand表達式中常用的<b class='flag-5'>語法規則</b>和運算符使用](https://file1.elecfans.com/web2/M00/02/CA/wKgZoma91B2AXkxCAACWfBaqwuc637.jpg)
可以使用JSON將prov-config參數從網頁發送到esp8266嗎?
鴻蒙開發Ability Kit程序框架服務:FA模型切換Stage模型指導 配置文件差異
![鴻蒙開發Ability Kit程序框架服務:FA模型切換Stage模型指導 配置文件差異](https://file1.elecfans.com/web2/M00/F3/2F/wKgZomZ8B0CARNxEAAIfjY_WHyA129.jpg)
評論