Đối tượng Không giống như hầu hết các đối tượng toàn cầu, JSON là một cú pháp để tuần tự hóa các đối tượng, mảng, số, chuỗi, booleans và Tên tài sản phải là chuỗi được trích dẫn kép; Dấu phẩy bị cấm. Các số không hàng đầu bị cấm. Một điểm thập phân phải được theo sau bởi ít nhất một chữ số. JSON
chứa các phương thức phân tích ký hiệu đối tượng JavaScript [JSON] và chuyển đổi các giá trị thành JSON. Nó không thể được gọi hoặc xây dựng.JSON
object contains methods for parsing JavaScript Object Notation [JSON] and converting values to JSON. It can't be called or constructed.Sự mô tả
JSON
không phải là một hàm tạo. Bạn không thể sử dụng nó với toán tử new
hoặc gọi đối tượng JSON
làm hàm. Tất cả các thuộc tính và phương thức của JSON
là tĩnh [giống như đối tượng Math
].Sự khác biệt của JavaScript và JSON
null
. Nó dựa trên cú pháp JavaScript, nhưng khác với JavaScript: hầu hết JavaScript không phải là JSON. Ví dụ:
0 và {
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
1 không được hỗ trợ.{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
Bất kỳ văn bản JSON nào cũng là một biểu thức JavaScript hợp lệ, nhưng chỉ sau khi sửa đổi JSON SuperSet. Trước khi sửa đổi, bộ phân cách dòng U+2028 và phân tách đoạn U+2029 được cho phép trong các chuỗi chữ và khóa thuộc tính trong JSON; Nhưng việc sử dụng tương tự trong các chữ JavaScript là một
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
2.Các khác biệt khác bao gồm chỉ cho phép các chuỗi được trích dẫn kép và không hỗ trợ cho
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
3 hoặc nhận xét. Đối với những người muốn sử dụng định dạng cấu hình thân thiện với con người hơn dựa trên JSON, có JSON5, được sử dụng bởi trình biên dịch Babel và YAML được sử dụng phổ biến hơn.Cùng một văn bản có thể đại diện cho các giá trị khác nhau trong các chữ cái JavaScript so với JSON. Để biết thêm thông tin, hãy xem Đối tượng cú pháp theo nghĩa đen so với JSON.
Ngữ pháp JSON đầy đủ
Cú pháp JSON hợp lệ được chính thức được xác định bởi ngữ pháp sau, được thể hiện bằng ABNF và được sao chép từ tiêu chuẩn IETF JSON [RFC]:
JSON-text = object / array begin-array = ws %x5B ws ; [ left square bracket begin-object = ws %x7B ws ; { left curly bracket end-array = ws %x5D ws ; ] right square bracket end-object = ws %x7D ws ; } right curly bracket name-separator = ws %x3A ws ; : colon value-separator = ws %x2C ws ; , comma ws = *[ %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ; Carriage return ] value = false / null / true / object / array / number / string false = %x66.61.6c.73.65 ; false null = %x6e.75.6c.6c ; null true = %x74.72.75.65 ; true object = begin-object [ member *[ value-separator member ] ] end-object member = string name-separator value array = begin-array [ value *[ value-separator value ] ] end-array number = [ minus ] int [ frac ] [ exp ] decimal-point = %x2E ; . digit1-9 = %x31-39 ; 1-9 e = %x65 / %x45 ; e E exp = e [ minus / plus ] 1*DIGIT frac = decimal-point 1*DIGIT int = zero / [ digit1-9 *DIGIT ] minus = %x2D ; - plus = %x2B ; + zero = %x30 ; 0 string = quotation-mark *char quotation-mark char = unescaped / escape [ %x22 / ; " quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ] ; uXXXX U+XXXX escape = %x5C ; \ quotation-mark = %x22 ; " unescaped = %x20-21 / %x23-5B / %x5D-10FFFF HEXDIG = DIGIT / %x41-46 / %x61-66 ; 0-9, A-F, or a-f ; HEXDIG equivalent to HEXDIG rule in [RFC5234] DIGIT = %x30-39 ; 0-9 ; DIGIT equivalent to DIGIT rule in [RFC5234]
Khoảng trắng không đáng kể có thể xuất hiện ở bất cứ đâu ngoại trừ trong một
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
4 [các số phải không chứa khoảng trắng] hoặc {
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
5 [trong đó nó được hiểu là ký tự tương ứng trong chuỗi hoặc sẽ gây ra lỗi]. Ký tự tab [u+0009], return vận chuyển [u+000D], nguồn cấp dữ liệu dòng [u+000a] và các ký tự không gian [u+0020] là các ký tự khoảng trắng hợp lệ duy nhất.Phương pháp tĩnh
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
6Phân tích một đoạn văn bản chuỗi là JSON, tùy chọn chuyển đổi giá trị được tạo ra và các thuộc tính của nó và trả về giá trị.
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
7Trả về chuỗi JSON tương ứng với giá trị được chỉ định, tùy chọn chỉ bao gồm một số thuộc tính nhất định hoặc thay thế các giá trị thuộc tính theo cách do người dùng xác định.
Ví dụ
Ví dụ json
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
Bạn có thể sử dụng phương thức
{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}
6 để chuyển đổi chuỗi JSON trên thành đối tượng JavaScript:const jsonText = `{
"browsers": {
"firefox": {
"name": "Firefox",
"pref_url": "about:config",
"releases": {
"1": {
"release_date": "2004-11-09",
"status": "retired",
"engine": "Gecko",
"engine_version": "1.7"
}
}
}
}
}`;
console.log[JSON.parse[jsonText]];
Thông số kỹ thuật
Đặc tả ngôn ngữ Ecmascript # sec-json-expect # sec-json-object |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt