0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是JSON JSON的語法規(guī)則

jmiy_worldofai ? 來源:機器人及PLC自動化應(yīng)用 ? 作者:微笑應(yīng)對 ? 2021-08-25 15:40 ? 次閱讀

JSON數(shù)據(jù)交換格式

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數(shù)據(jù)交換格式。它基于 ECMAScript (歐洲計算機協(xié)會制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。

JSON是Douglas Crockford在2001年開始推廣使用的數(shù)據(jù)格式,在2005年-2006年正式成為主流的數(shù)據(jù)格式,雅虎和谷歌就在那時候開始廣泛地使用JSON格式。

JSON 語法規(guī)則

JSON是一個標記符的序列。這套標記符包含六個構(gòu)造字符、字符串、數(shù)字和三個字面名。

JSON是一個序列化的對象或數(shù)組。

1. 六個構(gòu)造字符:

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. 在這六個構(gòu)造字符的前或后允許存在無意義的空白符(ws):

ws = *(%x20 /; 空間

%x09 /; 水平標簽

%x0A /; 換行或換行

%x0D); 回程

3.JSON的值:

3.1 JSON的構(gòu)成: ws 值 ws [1]

3.2值可以是對象、數(shù)組、數(shù)字、字符串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。

3.2.1對象由花括號括起來的逗號分割的成員構(gòu)成,成員是字符串鍵和上文所述的值由逗號分割的鍵值對組成,如:

1 {“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}

3.2.2數(shù)組是由方括號括起來的一組值構(gòu)成,如:

1[3, 1, 4, 1, 5, 9, 2, 6]

3.2.3 字符串與C或者Java的字符串非常相似。字符串是由雙引號包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個字符(character)即一個單獨的字符串(character string)。

3.2.4數(shù)字也與C或者Java的數(shù)值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節(jié)。 [2]

一些合法的JSON的實例:

1{“a”: 1, “b”: [1, 2, 3]}

1[1, 2, “3”, {“a”: 4}]

13.14

1“plain_text”

JSON 與 JS 對象的關(guān)系

很多人搞不清楚 JSON 和 JS 對象的關(guān)系,甚至連誰是誰都不清楚。其實,可以這么理解:

JSON 是 JS 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質(zhì)是一個字符串。

1var obj = {a: ‘Hello’, b: ‘World’}; //這是一個對象,注意鍵名也是可以使用引號包裹的

1var json = ‘{“a”: “Hello”, “b”: “World”}’; //這是一個 JSON 字符串,本質(zhì)是一個字符串

JSON 和 JS 對象互轉(zhuǎn)

要實現(xiàn)從JSON字符串轉(zhuǎn)換為JS對象,使用 JSON.parse() 方法:

1var obj = JSON.parse(‘{“a”: “Hello”, “b”: “World”}’); //結(jié)果是 {a: ‘Hello’, b: ‘World’}

要實現(xiàn)從JS對象轉(zhuǎn)換為JSON字符串,使用 JSON.stringify() 方法:

1var json = JSON.stringify({a: ‘Hello’, b: ‘World’}); //結(jié)果是 ‘{“a”: “Hello”, “b”: “World”}’

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7048

    瀏覽量

    89076
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    18119
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    117

    瀏覽量

    6977

原文標題:JSON數(shù)據(jù)交換格式

文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    實例篇 4G模組軟件之json數(shù)據(jù)處理!

    今天我會把4G模組軟件的json數(shù)據(jù)處理整理成文,以低功耗模組Air780E為例,一一展示出來:
    的頭像 發(fā)表于 11-12 12:17 ?214次閱讀

    遠程IO控制器ZLAN6808-3 使用JSON定時下發(fā)執(zhí)行DO通斷

    的成本。遠程IO控制器在很多場景中作為代替PLC運行,但是遠程IO控制器有無法內(nèi)部編程的缺點,而卓嵐6808-3/-5-8等支持JSON定時下發(fā)串口指令控制從而實現(xiàn)DO繼電器通斷,大大增加了產(chǎn)品實用性
    的頭像 發(fā)表于 10-28 09:38 ?235次閱讀
    遠程IO控制器ZLAN6808-3 使用<b class='flag-5'>JSON</b>定時下發(fā)執(zhí)行DO通斷

    JSON協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用JSON協(xié)議和服務(wù)器交互

    理想的數(shù)據(jù)交換語言。 JSON之所以受歡迎,主要是因為它仍然使用 JavaScript 語法來描述數(shù)據(jù)對象,并沒有改變開發(fā)人員的使用習慣,
    的頭像 發(fā)表于 09-25 16:14 ?829次閱讀
    <b class='flag-5'>JSON</b>協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用<b class='flag-5'>JSON</b>協(xié)議和服務(wù)器交互

    TestStand表達式中常用的語法規(guī)則和運算符使用

    TestStand也有自己的語言嘛?在回答這個問題之前大家可以想一下在使用TestStand時有一個和語言密切相關(guān)的屬性。沒錯那就是表達式(Expressions),在這篇文章中,小編將以Q&A的方式來帶著大家來理解并熟悉TestStand表達式中較為常用的一些語法規(guī)則以及運算符使用。
    的頭像 發(fā)表于 08-15 18:10 ?1477次閱讀
    TestStand表達式中常用的<b class='flag-5'>語法規(guī)則</b>和運算符使用

    可以使用JSON將prov-config參數(shù)從網(wǎng)頁發(fā)送到esp8266嗎?

    請求。所以另一個意識形態(tài)。為什么不在Protocomm之外制作另一個簡單的httpd/task來監(jiān)聽GET請求呢?而且它不起作用 我該怎么辦,我該怎么辦?請。 其他問題。我可以使用 JSON 將 prov-config 參數(shù)從網(wǎng)頁發(fā)送到 esp8266 嗎?
    發(fā)表于 07-09 07:41

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導 module的切換

    從FA模型切換到Stage模型時,開發(fā)者需要將config.json文件module標簽下的配置遷移到module.json5配置文件module標簽下,具體差異見下列表格。
    的頭像 發(fā)表于 06-27 14:16 ?467次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導 module的切換

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導 配置文件差異

    FA模型應(yīng)用在[config.json文件]中描述應(yīng)用的基本信息,一個應(yīng)用工程中可以創(chuàng)建多個Module,每個Module中都有一份config.json文件。config.json由app
    的頭像 發(fā)表于 06-27 09:50 ?446次閱讀
    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導 配置文件差異

    http讀取百度返回的json數(shù)據(jù)時丟失數(shù)據(jù)怎么處理?

    我在使用百度ai開放平臺的語音識別功能,讀取返回的數(shù)據(jù)時,使用esp_http_client_read(client, http_data, 1024);讀到的數(shù)據(jù)里沒有json的數(shù)據(jù),還是http
    發(fā)表于 06-24 07:00

    espidf組件是否有json組包或者messagePack的庫文件?

    espidf組件是否有json組包或者messagePack的庫文件
    發(fā)表于 06-21 07:10

    ?PLC設(shè)備通過智能網(wǎng)關(guān)采用HTTP協(xié)議JSON文件對接MES、ERP等系統(tǒng)平臺

    )配置JSON文件的字段與PLC寄存器地址等參數(shù)即可。 智能網(wǎng)關(guān)IGT-DSER支持POST/GET/PUT等多種方法,可同時作為HTTP協(xié)議的客戶端和服務(wù)端。作為客戶端通訊時將JSON文件提交
    發(fā)表于 05-13 12:04

    鴻蒙OpenHarmony開發(fā)板解析:【 部件配置規(guī)則

    部件的bundle.json放在部件源碼的根目錄下。以泛sensor子系統(tǒng)的sensor服務(wù)部件為例,
    的頭像 發(fā)表于 05-09 15:15 ?917次閱讀
    鴻蒙OpenHarmony開發(fā)板解析:【 部件配置<b class='flag-5'>規(guī)則</b>】

    鴻蒙OpenHarmony開發(fā)板:【子系統(tǒng)配置規(guī)則

    通過build倉下的subsystem_config.json可以查看所有子系統(tǒng)的配置規(guī)則
    的頭像 發(fā)表于 05-08 22:07 ?287次閱讀
    鴻蒙OpenHarmony開發(fā)板:【子系統(tǒng)配置<b class='flag-5'>規(guī)則</b>】

    PLC采用HTTP協(xié)議JSON文件對接MES等服務(wù)系統(tǒng)平臺

    智能網(wǎng)關(guān)IGT-DSER集成了多種PLC的原廠協(xié)議,方便實現(xiàn)各種PLC、智能儀表通過HTTP協(xié)議與MES等各種系統(tǒng)平臺通訊對接。PLC內(nèi)不用編寫程序,通過網(wǎng)關(guān)的參數(shù)配置軟件(在附件中)綁定JSON
    發(fā)表于 03-25 14:25

    ?PLC從HTTP服務(wù)端獲取JSON文件,解析數(shù)據(jù)到寄存器

    智能網(wǎng)關(guān)IGT-DSER集成了多種PLC協(xié)議,方便實現(xiàn)各種PLC與HTTP服務(wù)端之間通訊。通過網(wǎng)關(guān)的參數(shù)配置軟件綁定JSON文件的字段與PLC寄存器地址,配置URL,即可采用POST命令,將JSON
    發(fā)表于 01-24 09:47

    鴻蒙開發(fā):OH編譯構(gòu)建分析 - 依賴關(guān)系檢查

    BUILD.gn文件??梢允褂锰峁┑哪0?,也可以使用gn語法規(guī)則自定義編寫。 例子: ? ohos_shared_library示例: import(\"http://build/ohos.gni
    發(fā)表于 01-16 20:35