JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,不僅在JavaScript中廣泛應用,也被許多其他編程語言所支持。它具有語法簡單、易於解析和生成、可讀性強等特點,逐漸成為Web開發中常用的數據交換格式之一。本文將從多個方面詳細解釋JSON文件格式規範,幫助讀者更好地了解和使用JSON。
一、語法規範
JSON文件由一些列名值對(key-value pairs)組成。每個名值對之間用逗號(,)分隔,整個文件需要用花括弧({})包裹。如下是一個簡單的JSON文件示例:
{ "name": "Tom", "age": 18, "gender": "male" }
在JSON文件中,key通常是字元串類型,需要用雙引號(”)表示;value可以是字元串、數字、布爾值、數組、對象等類型。數組需要用方括弧([])包裹,每個元素用逗號(,)分隔;對象同樣需要用花括弧({})包裹,每個名值對用逗號(,)分隔。示例如下:
{ "name": "Tom", "age": 18, "gender": "male", "scores": [90, 85, 95], "info": { "school": "ABC University", "major": "Computer Science" } }
另外,在JSON文件中,可以使用空白符(空格、製表符、換行符等)來增加代碼的可讀性。JSON解析器不會對空白符做任何處理。
二、數據類型
JSON文件支持6種數據類型,分別為:
1. 字元串(string):表示文本字元序列,需要用雙引號(”)表示。
"user": "Tom"
2. 數字(number):表示數值,包括整數和浮點數。
"age": 18, "score": 98.5
3. 布爾值(boolean):表示真或假,只有兩個值:true和false。
"male": true
4. null:表示空值。
"address": null
5. 數組(array):表示一組有序的值,需要用方括弧([])包裹,每個元素之間用逗號(,)分隔。
"scores": [90, 85, 95]
6. 對象(object):表示一組無序的鍵值對集合,需要用花括弧({})包裹,每個鍵值對之間用逗號(,)分隔。
"info": { "school": "ABC University", "major": "Computer Science" }
三、轉義字元
在字元串值中,如果要出現特殊字元(如雙引號、反斜杠等),需要使用轉義字元(反斜杠 \)對其進行轉義。
"message": "I am a \"good\" student."
下表列出了JSON文件中常見的轉義字元:
轉義字元 | 含義 |
---|---|
\\ | 轉義為反斜杠 |
\” | 轉義為雙引號 |
\/ | 轉義為斜杠 |
\b | 轉義為退格符 |
\f | 轉義為換頁符 |
\n | 轉義為換行符 |
\r | 轉義為回車符 |
\t | 轉義為製表符 |
四、JSONP
JSONP(JSON with Padding)是一種跨域數據交互技術,用於解決瀏覽器跨域訪問數據的問題。JSONP的原理是通過動態創建script標籤,實現跨域請求數據,並通過回調函數的方式解析返回的數據。JSONP的使用需要配合服務端進行處理。
下面是一個JSONP請求的示例:
<script> function requestData(data) { console.log(data); } var script = document.createElement('script'); script.src = 'http://example.com/api?callback=requestData'; document.body.appendChild(script); </script>
以上代碼可以實現通過JSONP方式請求example.com介面,返回數據後調用requestData函數進行處理。
五、JSON Schema
JSON Schema是一種用於驗證和描述JSON文件的規範。它可以用於定義JSON文件的結構,驗證JSON文件是否符合規範等。
下面是一個JSON Schema的示例:
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "User", "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer" }, "gender": { "type": "string", "enum": ["male", "female"] }, "scores": { "type": "array", "items": { "type": "integer" } }, "info": { "type": "object", "properties": { "school": { "type": "string" }, "major": { "type": "string" } } } }, "required": ["name", "age"] }
以上JSON Schema定義了一個”User”對象,包含”name”、”age”、”gender”、”scores”和”info”等欄位。其中,”name”和”age”是必填項,”gender”只能取”male”或”female”兩個值,”scores”是一個整數數組,”info”是一個對象,其中包含”school”和”major”兩個欄位。通過JSON Schema,可以方便地驗證JSON文件是否符合要求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187720.html