Nhảy đến nội dung

JSON

本頁使用了標題或全文手工轉換
Duy cơ bách khoa, tự do bách khoa toàn thư
JSON
Phó đương danh
.json
Võng lộTruyền thông hình thức
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
Kéo dài 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 số ( javascript thông qua eval() gọi 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 số kho.

JSON cơ bản tư 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 chi viện 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ị.Chi việnPhản nghiêng giangBắt đầuKhiêu thoát tự nguyên danh sách.
  • Bố lâm 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. Hàng ngũ sử dụng dấu móc[]Bao vây. Nhiều hàng ngũ 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ự 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ự 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ự nguyên bị cho rằng là chỗ trống phù:Không cách phù,Trình độ chế biểu phù,Hồi xe tự nguyên,Đổ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ự xuyến bên trong ). JSON tiêu chuẩn không cho phép cóVị nguyên tổ tự che tráo,Không cung cấp chú thích cú pháp. Một cái hữu hiệu JSON văn kiện căn tiết điểm cần thiết là một cái đối tượng hoặc một cái hàng ngũ.

JSON trao đổi khi cần thiết mã hóa vìUTF-8.[3]Khiêu thoát danh sách có thể vì: “\\”, “\"”, “\/”, “\b”, “\f”, “\n”, “\r”, “\t”, hoặcUnicode16 tiến chế khiêu thoát tự nguyên danh sách ( \u mặt sau đi theo 4 vị nguyên16 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ự nguyên —— 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 tức thời hầu phục khí đến trình duyệt đối nói thông tin hiệp định nhu cầu, không cần sử dụng Flash hoặc Java tiểu thể thức chờ trình duyệt ngoại quải thể thức, đâ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 thành lập có trạng thái Web ứng dụng thể thức, nên dùng thể thức có thông qua bảo trì hai cái siêu văn tự truyền hiệp định (HTTP) liên tiếp mở ra cũng ở tiêu chuẩn trình duyệt quá thời gian 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 hầu phục khí 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 thức ngôn ngữ ) vẫn là JSON ( JavaScript đồ vật 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 với Cartoon Network Communities thượng tên là “Cartoon Orbit” nhi đồng chữ số tài sản giao dịch trò chơi chuyên án ( 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 chuyên án sử dụng có đặc biệt tin tức cách thức trình duyệt đoan ngoại quải thể thức 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 một lần nữa sửa sang lại Web ứng dụng thể thức 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 tức thời phong phú Web ứng dụng thể thức 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 dựa 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 tự 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, hầu phục khí, Web ứng dụng thể thức, kho, dàn giáo cùng API cũng chi viện 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 sưu tầm API, nhã hổ, Facebook API, Lift, cùng Dojo Toolkit. JSON giá cấu chỉ định một loại dựa vào JSON cách thức, dùng với định nghĩa dùng với nghiệm chứng, văn kiện cùng hỗ động khống chế JSON số liệu kết cấu. Nó vì cấp định ứng dụng thể thức 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 dựa vào XML giá cấu ( XSD ) trung khái niệm, nhưng dựa 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 với 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 với bất đồng thể thức 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 phó đương tên là.json. JSON tiêu chuẩn không chi viện đối tượng tham chiếu, nhưng tồn tại dựa vào JSON đối tượng tham chiếu 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 dựa vào văn kiện chứa đựngNoSQLPhi quan hệ hình cơ sở dữ liệu lựa chọn JSON làm này số liệu chứa đựng 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 phần mềm dùng để làm như bộ phận số liệu chứa đựng 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 hàng ngũ JSON văn tự. Vì thực hiện lẫn nhau thao tác tính, trao đổi JSON ứng dụng thể thức ứng truyền đối tượng hoặc hàng ngũ 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 thể thức ở 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 thể thức 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ó chứa đựng vì IEEE754 “binary64” số lượng. Vì thực hiện lẫn nhau thao tác tính, ứng dụng thể thức ứ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 tự trung Unicode tự nguyên tự nguyên 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 thể thức ứ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ự nguyên vị nguyên tổ danh sách. Vì thực hiện lẫn nhau thao tác tính, ứng dụng thể thức ứng truyền không bao hàm này loại vị nguyên tổ danh sách tin tức.
  • Nên quy phạm không hạn chế ứng dụng thể thức như thế nào tương đối Unicode tự xuyến. Vì thực hiện lẫn nhau thao tác tính, ứng dụng thể thức ứ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 giả thiết đương, 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 chi viện 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 chi việnJSON.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 chi viện ( IE8+, Firefox 3.5+, Chrome4+/Safari4+, Opera10+ ), ở không chi viện 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 chứa đựng, mở rộng cập tiến giai 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 chi viện, 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 hồ sơ đều là YAML cách thức hữu hiệu hồ sơ". 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 chi viện, 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 chi viện: Ở YAML văn kiện trung, có thể tham chiếu trước kia ở hồ sơ / 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. Chi viện trừ cơ nguyên ở ngoài nhưng kéo dài tư liệu loại hình, đọc đúng theo mặt chữ xuyến, con số, bố lâm giá trị chờ. Chi viện mang súc bài 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 tìm kiếm trung. Khai phá giả có thể sử dụng tuyến thượng 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 tìm kiế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]