Nhảy chuyển tới nội dung

JSON

本页使用了标题或全文手工转换
Duy cơ bách khoa, tự do bách khoa toàn thư
JSON
Mở rộng danh
.json
InternetTruyền thông loại hình
application/json
Loại hình số hiệu(Tiếng Anh:Type code)TEXT
Thống nhất loại hình đánh dấupublic.json
Cách thức loại hìnhSố liệu trao đổi
Mở rộng tựJavaScript
Tiêu chuẩnRFC 7159,ECMA-404
Trang webjson.org

JSON( JavaScript Object Notation,/ˈsən/,JavaScript đồ vật tỏ vẻ pháp ) là từNước MỹThể thức thiết kế sưDouglas · khắc la khắc phúc đặcTư tưởng cùng thiết kế một loại nhẹ lượng cấpTư liệu trao đổi cách thức.Này nội dung từ thuộc tính cùng giá trị sở tạo thành, bởi vậy cũng có dễ với đọc cùng xử lý ưu thế. JSON là độc lập vớiThể thức ngôn ngữTư liệu cách thức,Này không chỉ có làJavaScriptTử tập, cũng chọn dùngC ngôn ngữGia tộc thói quen cách dùng, trước mắt cũng có rất nhiều thể thức ngôn ngữ đều có thể đủ đem nàyPhân tích cùng tự xuyến hóa,Này rộng khắp sử dụng trình độ cũng làm này trở thành thông dụng tư liệu cách thức.

Tóm tắt

[Biên tập]

JSON cách thức là 1999 năm 《JavaScript Programming Language, Standard ECMA-262 3rd Edition》 tử tập hợp, cho nên có thể ởJavaScriptLấyeval()Hàm thức ( javascript thông qua eval() thuyên chuyển phân tích khí ) đọc nhập. Bất quá này cũng không đại biểu JSON vô pháp sử dụng với mặt khác ngôn ngữ, trên thực tế cơ hồ sở hữu cùng internet khai phá tương quan ngôn ngữ đều có JSON hàm thức kho.

JSON cơ bản số liệu loại hình:

  • Trị số: Số thập phân số, không thể có dẫn đường 0, có thể vì số âm, có thể có số nhỏ bộ phận. Còn có thể dùngeHoặc làETỏ vẻ chỉ số bộ phận. Không thể bao hàm phi số, như NaN. Không phân chia số nguyên cùng phù điểm số. JavaScript dùng song độ chặt chẽPhù điểm sốTỏ vẻ sở hữu trị số ( sau lại cũng duy trì BigInt[1]).
  • Tự xuyến: Lấy song dấu ngoặc kép""Quát lên linh cái hoặc nhiềuUnicodeMã vị.Duy trìPhản nghiêng giangBắt đầuChuyển nghĩa tự phù danh sách.
  • Bố ngươi giá trị: Tỏ vẻ vìtrueHoặc làfalse.
  • Hàng ngũ: Có tự linh cái hoặc là nhiều giá trị. Mỗi cái giá trị có thể vì tùy ý loại hình. Số tổ sử dụng dấu móc[]Bao vây. Nhiều số tổ nguyên tố chi gian dùng dấu phẩy,Phân cách, hình như:[value, value].
  • Đồ vật: Bao nhiêu vô tự “Kiện - giá trị đối” (key-value pairs), trong đó kiện chỉ có thể là tự phù xuyến[2].Kiến nghị nhưng không cưỡng chế yêu cầu đối tượng trung kiện là độc nhất vô nhị. Đối tượng lấy hoa dấu móc{}Bao vây. Nhiều kiện - giá trị đối chi gian sử dụng dấu phẩy,Phân cách. Kiện cùng giá trị chi gian dùng dấu hai chấm:Phân cách.
  • Không giá trị: Giá trị viết vìnull

token ( 6 loại dấu chấm câu, tự phù xuyến, trị số, 3 loại mặt chữ lượng ) chi gian có thể tồn tại hữu hạn chỗ trống phù cũng bị xem nhẹ. Bốn cái riêng tự phù bị cho rằng là chỗ trống phù:Không cách phù,Trình độ chế biểu phù,Hồi xe phù,Đổi hành phù.Chỗ trống phù không thể xuất hiện ở token bên trong ( nhưng không cách phù có thể xuất hiện ở tự phù xuyến bên trong ). JSON tiêu chuẩn không cho phép cóByte tự giấu mã,Không cung cấp chú thích cú pháp. Một cái hữu hiệu JSON hồ sơ căn tiết điểm cần thiết là một cái đối tượng hoặc một số tổ.

JSON trao đổi khi cần thiết mã hóa vìUTF-8.[3]Chuyển nghĩa danh sách có thể vì: “\\”, “\"”, “\/”, “\b”, “\f”, “\n”, “\r”, “\t”, hoặcUnicode16 tiến chế chuyển nghĩa tự phù danh sách ( \u mặt sau đi theo 4 vị16 tiến chế con số). Đối với không ởCơ bản nhiều văn loại mặt bằngThượngMã vị,Cần thiết dùngUTF-16Đại lý đối ( surrogate pair ) tỏ vẻ, tỷ như đối vớiEmojiTự phù —— hỉ cực mà khóc biểu tình (U+1F602😂FACE WITH TEARS OF JOY) ở JSON trung ứng tỏ vẻ vì:

{"face":"😂"}
// or
{"face":"\uD83D\uDE02"}

JSON cách thức miêu tả có thể tham khảo RFC 4627.

Lịch sử

[Biên tập]

JSON nguyên với đối thật khi server đến trình duyệt hội thoại thông tín hiệp nghị nhu cầu, không cần sử dụng Flash hoặc Java tiểu trình tự chờ trình duyệt cắm kiện, đây là 2000 niên đại lúc đầu sử dụng chủ yếu phương pháp.

Crockford đầu tiên chỉ định cũng phổ cập JSON cách thức. Cái này viết tắt từ khởi nguyên với State Software, đây là một nhà từ Crockford cùng những người khác với 2001 năm 3 nguyệt cộng đồng sáng lập công ty. Liên hợp người sáng lập đồng ý xây dựng một cái sử dụng tiêu chuẩn trình duyệt công năng hệ thống, cũng vì Web khai phá nhân viên cung cấp một cái trừu tượng tầng tới sáng tạo có trạng thái Web ứng dụng trình tự, nên dùng trình tự có thông qua bảo trì hai cái siêu văn bản truyền hiệp nghị (HTTP) liên tiếp mở ra cũng ở tiêu chuẩn trình duyệt siêu khi phía trước ( nếu không có tiến thêm một bước trao đổi số liệu ) thu về này đó liên tiếp, thực hiện cùng Web server kéo dài song công liên tiếp. Liên hợp người sáng lập tiến hành rồi thảo luận, cũng đầu phiếu quyết định đem số liệu cách thức mệnh danh là JSML ( JavaScript đánh dấu ngôn ngữ ) vẫn là JSON ( JavaScript đối tượng tỏ vẻ pháp ), cùng với ở loại nào cho phép loại hình hạ cung cấp nên cách thức. JSON.org trang web với 2001 năm đẩy ra.

JSON kho đời trước bị dùng cho Cartoon Network Communities thượng tên là “Cartoon Orbit” nhi đồng con số tài sản giao dịch trò chơi hạng mục ( State liên hợp người sáng lập phía trước đều từng tại đây gia công ty công tác quá ), nên hạng mục sử dụng có đặc biệt tin tức cách thức trình duyệt đoan cắm kiện tới thao tác DHTML nguyên tố ( nên hệ thống cũng thuộc về 3DO ). Ở phát hiện lúc đầu Ajax công năng sau, digiGroups, Noosh chờ công ty sử dụng dàn giáo đem tin tức truyền lại đến người dùng trình duyệt trong tầm nhìn, mà không cần đổi mới Web ứng dụng trình tự thị giác trên dưới văn, chỉ sử dụng tiêu chuẩn HTTP, HTML cùng JavaScript công năng có thể thực hiện thật khi phong phú Web ứng dụng trình tự Netscape 4.0.5+ cùng IE 5+. Crockford theo sau phát hiện JavaScript có thể dùng làm này loại hệ thống căn cứ vào đối tượng tin tức truyền lại cách thức. Nên hệ thống bị bán ra cấp Sun Microsystems, Amazon cùng EDS.

Ứng dụng lĩnh vực

[Biên tập]

Metadata cùng giá cấu

[Biên tập]

JSON văn bản phía chính phủ truyền thông loại hình là song dấu ngoặc kép, điểm này ở đại đa số hiện đại trang bị trung đều chọn dùng loại này loại hình. Bởi vì truyền thống nguyên nhân, rất nhiều phục vụ cung cấp thương, trình duyệt, server, Web ứng dụng trình tự, kho, dàn giáo cùng API cũng duy trì không chính thức MIME loại hình hoặc nội dung loại hình. Đáng giá chú ý ví dụ bao gồm Google tìm tòi API, nhã hổ, mặt thư API, Lift, cùng Dojo Toolkit. JSON giá cấu chỉ định một loại căn cứ vào JSON cách thức, dùng cho định nghĩa dùng cho nghiệm chứng, hồ sơ cùng lẫn nhau khống chế JSON số liệu kết cấu. Nó vì cấp định ứng dụng trình tự sở cần JSON số liệu cùng với như thế nào sửa chữa nên số liệu cung cấp hiệp định. JSON giá cấu căn cứ vào XML giá cấu ( XSD ) trung khái niệm, nhưng căn cứ vào JSON. Cùng ở XSD trung giống nhau, tương đồng danh sách hóa / phản danh sách hóa chất cụ nhưng dùng cho giá cấu cùng số liệu, hơn nữa nó là tự miêu tả. Nó ở IETF internet bản dự thảo ngón giữa định, trước mắt vì 2020-12 năm bản dự thảo, với 2021 năm 1 nguyệt 28 ngày tuyên bố. Có mấy cái nghiệm chứng khí nhưng dùng cho bất đồng biên trình ngôn ngữ, mỗi cái nghiệm chứng khí đều có bất đồng trình độ nhất trí tính. Tiêu chuẩn văn kiện mở rộng tên là.json. JSON tiêu chuẩn không duy trì đối tượng trích dẫn, nhưng tồn tại căn cứ vào JSON đối tượng trích dẫn IETF bản dự thảo tiêu chuẩn.

WEB khai phá

[Biên tập]

JSON ban đầu bị rộng khắp ứng dụng với WEB ứng dụng khai phá. Bất quá trước mắt JSON sử dụng ởJavaScript,Java,Node.js,C#Ứng dụng tình huống tương đối nhiều,PHPChờ khai phá WEB ứng dụng chủ yếu vẫn là sử dụngXML.

NoSQL cơ sở dữ liệu

[Biên tập]

Tương đối với truyền thốngQuan hệ hình cơ sở dữ liệu,Một ít căn cứ vào hồ sơ tồn trữNoSQLPhi quan hệ hình cơ sở dữ liệu lựa chọn JSON làm này số liệu tồn trữ cách thức, tương đối nổi danh sản phẩm có:MongoDB,CouchDB,RavenDB(Tiếng Anh:RavenDB)Chờ.

Nêu ví dụ

[Biên tập]
{
"firstName":"John",
"lastName":"Smith",
"sex":"male",
"age":25,
"address":
{
"streetAddress":"21 2nd Street",
"city":"New York",
"state":"NY",
"postalCode":"10021"
},
"phoneNumber":
[
{
"type":"home",
"number":"212 555-1234"
},
{
"type":"fax",
"number":"646 555-4567"
}
]
}

Loại này JSON cách thức cũng bị không ít trò chơi ( nhưMinecraft) hoặc ứng dụng mềm thể dùng để làm như bộ phận số liệu tồn trữ cách thức:

[
{
"text":"This is the text",
"color":"dark_red",
"bold":true,
"strikethough":true,
"clickEvent":
{
"action":"open_url",
"value":"zh.wikipedia.org"
},
"hoverEvent":
{
"action":"show_text",
"value":
{
"text":"something"
}
}
},
{
"translate":"item.dirt.name",
"color":"blue",
"bold":false,
"italic":true
}
]

Lẫn nhau thao tác tính

[Biên tập]

RFC 8259(Giao diện lưu trữ sao lưu,Tồn vớiInternet hồ sơ quán) miêu tả JSON ngữ pháp nào đó phương diện, cứ việc này đó phương diện phù hợp quy phạm, nhưng khả năng sẽ dẫn tới lẫn nhau thao tác tính vấn đề.

  • Nào đó JSON thực hiện chỉ tiếp thu tỏ vẻ đối tượng hoặc số tổ JSON văn bản. Vì thực hiện lẫn nhau thao tác tính, trao đổi JSON ứng dụng trình tự ứng truyền đối tượng hoặc số tổ hình thức tin tức.
  • Nên quy phạm cho phép JSON đối tượng bao hàm nhiều có tương đồng tên thành viên. Xử lý có lặp lại tên đối tượng thực hiện hành vi là không thể đoán trước. Vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự ở truyền JSON đối tượng khi ứng tránh cho lặp lại tên.
  • Quy phạm đặc biệt chỉ ra JSON đối tượng trung thành viên trình tự cũng không quan trọng. Vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự hẳn là tránh cho vì thành viên bài tự giao cho hàm nghĩa, cho dù phân tích phần mềm sử nên bài tự có thể thấy được.
  • Tuy rằng quy phạm đối JSON con số văn tự lớn nhỏ hoặc độ chặt chẽ không có hạn chế, nhưng rộng khắp sử dụng JavaScript thực hiện đem chúng nó tồn trữ vì IEEE754 “binary64” số lượng. Vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự ứng tránh cho truyền vô pháp lấy phương thức này tỏ vẻ con số, tỷ như 1E400 hoặc 3.141592653589793238462643383279.
  • Tuy rằng quy phạm không hạn chế JSON văn bản trung Unicode tự phù tự phù mã hóa, nhưng tuyệt đại đa số thực hiện đều chọn dùngUTF-8Mã hóa; vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự ứng trước sau thả chỉ sử dụng UTF-8 đối JSON tin tức tiến hành mã hóa.
  • Nên quy phạm cũng không cấm truyền không thể chính xác tỏ vẻ Unicode tự phù byte danh sách. Vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự ứng truyền không bao hàm này loại byte danh sách tin tức.
  • Nên quy phạm không hạn chế ứng dụng trình tự như thế nào tương đối Unicode tự phù xuyến. Vì thực hiện lẫn nhau thao tác tính, ứng dụng trình tự ứng trước sau từng cái số hiệu đơn nguyên chấp hành này tương tự so.

2015 năm, IETF tuyên bốRFC7493(Giao diện lưu trữ sao lưu,Tồn vớiInternet hồ sơ quán), miêu tả “I-JSON tin tức cách thức”, đây là JSON chịu hạn phối trí văn kiện, nó hạn chế JSON ngữ pháp cùng xử lý, lấy tận khả năng tránh cho này đó lẫn nhau thao tác tính vấn đề

An toàn vấn đề

[Biên tập]

Đọc lấy JSON

[Biên tập]

Bởi vì JSON làJavaScriptTử tập, cho nên giống nhau đều sẽ sử dụngeval()Làm đọc lấy tư liệu phương thức, nếu là nhằm vào đáng tin cậy số liệu nơi phát ra, ở không duy trì nguyên sinh JSON phân tích trình duyệt mặt trên đây là nhanh chóng nhất phương pháp. Nhưng mà bởi vì eval phương pháp đồng dạng có thể chấp hành tùy ý JavaScript số hiệu, bởi vậy đương số liệu nơi phát ra không đáng tin khi tắc khả năng sinh ra an toàn vấn đề. Như sau mặt ví dụ, trực tiếp dùng eval chấp hành lúc ấy nhảy chuyển:

varjson=eval("{message:(function (){ window.location='http://zh.wikipedia.org/wiki/JSON#.E5.AE.89.E5.85.A8.E6.80.A7.E5.95.8F.E9.A1.8C'; })()}");

Trong đó một loại phòng ngừa không an toàn thể thức mã xuất hiện biện pháp giải quyết, là thông qua trình duyệt nguyên sinh duy trìJSON.parse(str)Phương pháp đọc lấy JSON tư liệu, trước mắt đã được đến đại bộ phận chủ lưu trình duyệt duy trì ( IE8+, Firefox 3.5+, Chrome4+/Safari4+, Opera10+ ), ở không duy trì nguyên sinh JSON đối tượng trình duyệt mặt trên có thể sử dụngparseJSONPhương pháp tiến hành đọc lấy[4],parseJSONChọn dùng phân tích khí nghiệm chứng đọc nhập thể thức mã hay không thật là JSON thể thức mã, như vậy liền càng an toàn. Nhưng bởi vì đây là dùng bắt chước phương thức đọc lấy, tốc độ thượng sẽ soeval()Chậm.

Vượt trạm tồn lấy vấn đề

[Biên tập]

Một cái khác an toàn thượng vấn đề còn lại làVượt trạm thỉnh cầu giả tạo( Cross-site request forgery, tên gọi tắt CSRF hoặc XSRF ). Vấn đề này ở JavaScript trung trạng huống là, bởi vì JavaScript chọn dùng xưng là “Hộp cát”Cơ chế, loại này cơ chế hạn chế JavaScript động cơ chỉ có thể dẫn vào cùng cái trạm điểm thể thức mã, cho nên nào đó trình độ nâng lên cao an toàn tính.

Cùng mặt khác cách thức tương đối

[Biên tập]

JSON cùng XML lớn nhất bất đồng nằm ở XML là một cái hoàn chỉnhĐánh dấu ngôn ngữ,Mà JSON không phải. Cảnh này khiến XML ở thể thức phán đọc thượng yêu cầu tương đối nhiều công phu. Chủ yếu nguyên nhân nằm ở XML thiết kế lý niệm cùng JSON bất đồng. XML lợi dụng đánh dấu ngôn ngữ đặc tính cung cấp tuyệt hảo có thể kéo dài và dát mỏng ( nhưXPath), ở số liệu tồn trữ, mở rộng cập cao cấp kiểm tra phương diện cụ bị đối JSON ưu thế, mà JSON tắc bởi vì so XML càng thêm tiểu xảo, cùng với trình duyệt nội kiến nhanh chóng phân tích duy trì, khiến cho này càng áp dụng với internet số liệu truyền lĩnh vực.

Ở công năng cùng ngữ pháp thượng, JSON đều là YAML ngôn ngữ một cái tử tập. Đặc biệt là, YAML 1.2 quy phạm chỉ định “Bất luận cái gì JSON cách thức văn kiện đều là YAML cách thức hữu hiệu văn kiện". Nhất thường thấy YAML phân tích khí cũng có thể đủ xử lý JSON. Phiên bản 1.2 phía trước YAML quy phạm không có hoàn toàn bao dung JSON, chủ yếu là bởi vì YAML trung khuyết thiếu bổn cơ UTF-32 duy trì, cùng với đối dấu phẩy phân cách không cách yêu cầu; ngoài ra, JSON quy phạm còn bao gồm /* */ hình thức chú thích. YAML quan trọng nhất khác nhau là ngữ pháp mở rộng tập, chúng nó ở JSON trung không có cùng loại vật: Quan hệ số liệu duy trì: Ở YAML hồ sơ trung, có thể trích dẫn trước kia ở văn kiện / lưu trung tìm được miêu điểm; thông qua phương thức này, ngài có thể biểu đạt đệ quy kết cấu. Duy trì trừ cơ nguyên ở ngoài nhưng mở rộng số liệu loại hình, đọc đúng theo mặt chữ phù xuyến, con số, bố ngươi giá trị chờ. Duy trì mang súc tiến khối ngữ pháp; nó cho phép ngài ở không sử dụng không cần thiết ký hiệu dưới tình huống miêu tả kết cấu hóa số liệu: Các loại dấu móc, dấu ngoặc kép chờ.

MessagePack

[Biên tập]

MessagePackTuyên bố so JSON càng ngắn nhỏ, nhanh chóng.

Cách thức hóa chất cụ

[Biên tập]

JSON cách thức thay thế được XML cấp internet truyền mang đến rất lớn tiện lợi, nhưng là lại không có XML vừa xem hiểu ngay, đặc biệt là JSON số liệu rất dài thời điểm, sẽ làm người lâm vào rườm rà phức tạp số liệu tiết điểm tra tìm trung. Khai phá giả có thể thông qua tại tuyến JSON cách thức hóa chất cụ, tới càng phương tiện đối JSON số liệu tiến hành tiết điểm tra tìm giải hòa tích.

Tham khảo văn hiến

[Biên tập]
  1. ^BigInt - MDN Web Docs Glossary: Definitions of Web-related terms | MDN.developer.mozilla.org. 2023-06-08[2023-06-12].( nguyên thủy nội dungLưu trữVới 2023-02-03 )( nước Mỹ tiếng Anh ).
  2. ^MDN-JSON tiêu chuẩn.[2021-10-30].(Nguyên thủy nội dungLưu trữ với 2022-04-03 ).
  3. ^The JavaScript Object Notation (JSON) Data Interchange Format.IETF. December 2017[16 February2018].(Nguyên thủy nội dungLưu trữ với 2021-01-20 ).
  4. ^JSON and Browser Security.[2007-07-14].(Nguyên thủy nội dungLưu trữ với 2020-07-16 ).
  1. Apple lối tắt(Giao diện lưu trữ sao lưu,Tồn vớiInternet hồ sơ quán)

Xem thêm

[Biên tập]

Phần ngoài liên kết

[Biên tập]