「JSON」:修訂間差異
從 JSON 檔案批量匯入 |
(無差異)
|
於 2025年8月19日 (二) 22:00 的修訂
JSON(JavaScriptObjectNotation , / ˈdʒeɪsən /)是由美國程式設計師道格拉斯 ・ 克羅克福特構想佮設計的一種輕量級資料交換格式。其內容是由屬性佮值所組成,所以嘛會對閱讀佮處理優勢。JSON 是獨立於程式語言的資料式,其實毋但是 JavaScript 的子集,嘛有採用 C 語言家族的慣勢用法,目前嘛是有真濟程式語言攏會當共解破佮字串化,其廣泛使用的程度嘛使其成為通用的資料格式。
簡介
JSON 格式是一九九九年《_ JavaScript Programming Language , Standard ECMA 被二百六十二三 rd Edition _》的子集合,所以我會當佇 JavaScript 以 ` eval ( ) ` 函式(javascript 通過 eval ( ) 呼叫解析器)讀入去。猶毋過這並毋是代表 JSON 是無法度使用其他的語言,事實上差不多所有佮網路開發相關的語言攏有 JSON 函式庫。
JSON 的基本資料類型:
- 數值:十進位數,袂使有前導零,會當為負數,會當有小數部份。猶閣會用得`e` 抑是講 `E` 表示指數部份。袂當包括非數,如 NaN。無分別佮浮點數。JavaScript 用雙精度浮點數表示所有數值。
- 字捾:以雙引號 `" "`括起來的零个抑是濟个 Unicode 碼位。支援反斜槓開始的跳脫字元序列。
- 布林值:表示講 ` true ` 抑是講 ` false `。
- 陣列:順序的零个抑是濟个值。逐个值得為任意類型。陣列使用方括號 `[]` 包裹。加一陣列的元素之間用弄號 `,` 分隔,形如講:` [ value , value] `。
- 東西:如果只有晚輩的「鍵-價值嘿」( key-value pairs ),其中鍵只會當是字攕。建議但無強制要求物件中的鍵是獨一無二的。物件以花括號 `{ }` 包裹。加一寡鍵-著之間使用樂機 `,` 分隔。鍵佮值之間用冒號 `:` 分隔。
- 空值:價值寫為 ` null `
token(六種標點符號、字捾、數值、三種字面量)之間會當存在有限的空白符並且予人忽略。四个特定字元予人認為是空白符:空格符、水平制表符、回車字元、換行符。空白符仔袂使出現佇咧 token 內部(但這个空格符會當出現佇字串內部)。 JSON 標準無允准有一个元組序崁蓋,無提供注釋的句法。一个有效 JSON 文件的根節點著愛是一个物件抑是一个陣列。
JSON 交換的時陣著愛編碼為UTF ma八。跳脫序列會當為:「 \ \」、「 \ "」、「 \ /」、「 \ b」、「 \ f」、「 \ n」、「 \ r」、「 \ t」,抑是 Unicode 十六進位跳脫字元序列(\ u 後壁跟隨四位元十六進位數字)。 對於無佇基本偌文種平面上的碼位,著愛用 UTF 鋪十六代理著(surrogate pair)表示,譬如講對著 Emoji 字元—— 喜極若泣的表情(U + 一 F 六百空二 😂 FACE WITH TEARS OFJOY)佇咧 JSON 中應表示為:
JSON 的格式咧講會當來參考 RFC 四千六百二十七。
應用領域
元資料佮架構
JSON 文字的官方媒體類型是雙引號,這點佇大多數現代的安裝中間攏採用這種類型。因為傳統原因,真濟服務提供商業、瀏覽器、侍服器、Web 應用程式、庫、框架佮 API 嘛支援非官方的 MIME 類型抑是內容類型。值得注意的例包括谷歌搜揣 API,雅虎,人面冊的 API,Lift,和 Dojo Toolkit。JSON 架構指定一種基於 JSON 的格式,用佇定義用來驗證、文件佮互動控制的 JSON 資料的結構。伊為予定應用程式所需要的 JSON 資料猶閣有欲按怎修改該資料提供協定。JSON 架構因為 XML 架構(XSD)咱中的概念,毋過因為 JSON。佮佇咧 XSD 著仝款,仝款的序列化 / 反序列化工具通用佇咧架構佮資料,並且伊是對伊講的。伊佇咧 IETF 的網際網路草案中指定,目前為著兩千空二十-一兩冬草案,佇二空二一年一月二八發布。有幾个驗證器通用佇無仝款的程式語言,彼每一个驗證器攏有無仝款程度的一致性。標準副檔名做 . json。JSON 標準無支援物件參照,但是存在因為 JSON 的物件參照的 IETF 草案標準。
WEB 開發
JSON 上開始廣泛的應用於 WEB 應用的開發。猶毋過目前 JSON 使用佇 JavaScript、Java、Node . js、C # 應用的情況較濟,PHP 等開發的 WEB 應用主要猶是使用 XML。
NoSQL 資料庫
佮傳統關係型資料庫相對傳統,一寡因為文件儲存的 NoSQL 袂要緊型的資料庫選擇 JSON 做其資料的儲存格式,較出名的產品有:MongoDB、CouchDB、RavenDB 等。
舉例
這種 JSON 格式嘛予袂少遊戲(如 Minecraft)或者是應用軟體用來做的部份資料儲存的格式:
安全的問題
讀取 JSON
因為 JSON 是 JavaScript 的子集,所以一般攏有咧用 ` eval ( ) ` 做為讀資料的方式,你若講針著這可靠的資料來源,在不支援原生 JSON 解析的瀏覽器頂懸這是上緊的方法。毋過因為 eval 方法仝款會當執行任意的 JavaScript 代碼,因此當資料來源不可靠時則可能產生安全問題。像下跤的比子,直接用 eval 執行會跳轉:
其中一種防止無安全程式碼出現的解決辦法,是通過瀏覽器原生支援的 ` JSON . parse ( str ) ` 步數讀 JSON 資料,目前已經得著大部份主流瀏覽器的支援( IE 八 +,Firefox 三人五 +,Chrome 四 + / Safari 四 +,Opera 十 +), 在不支援原生 JSON 物件的瀏覽器頂懸會當使用 ` parseJSON ` 方法進行讀冊,` parseJSON ` 用解析器來驗證讀入的程式碼敢有影是 JSON 程式碼,按呢就閣較安全。毋過因為這是用類比的方式讀,速度會比 ` eval ( ) ` 慢。
跨站存取問題
另外一个安全上的問題是跨站請求偽造(Cross-site request forgery,簡稱 CSRF 抑是 XSRF)。 這个問題佇咧 Javascript 中的狀況是,因為 Javascript 採用矣叫做「沙盒」的機制,這種機乎制限制 Javascript ia̋n-jín 干焦會當引入仝一个站點的程式碼,因為某一種程度提懸安全性。
佮其他格式的較
XML
JSON 佮 XML 上大的無仝佇咧講 XML 是一个完整的標記語言,而且 JSON 毋是呢。這會使 XML 佇咧程式判讀上需要較濟的工夫。主要的原因是因佇咧 XML 的設計理念佮 JSON 無仝。XML 利用標記語言的特性提供了真好的延展性(如 XPath), 咧資料儲存,擴充佮進階檢索方面具備著 JSON 的優勢,而且 JSON 著因為比 XML 閣較束結啦,猶閣有瀏覽器的內建快速解析支援,予伊閣較適合佇網路資料傳輸領域。
MessagePack
MessagePack 宣稱比 JSON 閣較短,快速。
格式化工具
JSON 格式共取代矣 XML 予網路傳輸帶來真大的利便,但是咧煞無去 XML 的一目了然,尤其是 JSON 資料誠濟長的時陣,會予人陷入厚工複雜的資料節點走揣中。開發者會使使用線頂 JSON 格式化工具,來閣較方便的著 JSON 資料進行節點走揣佮解析。
參考文獻
一 . Apple 捷徑
==參閱==* JSONP
- AJAX
- JavaScript
- YAML
- HOCON
外部連結
- (英文)JSON,關於著 JSON 的規格、檔案,猶閣有佇其他的語言實在做的資訊
- JSON 中文說明
- (英文)RFC 四千六百二十七,JSON 佇咧 RFC 內底的規格
- JSON 格式化工具 ( 中文 )
- JSON 編輯器
- JSON 分析器
- JSON 到 CSV 轉換器* Minecraft 指令 ─ JSON 文字格式
- JSON 線上格式化工具