🔫 JSON : The Fat-Free Alternative to XML
JSON đã được chấp nhận rộng rãi bởi những người nhận thấy rằng nó giúp việc sản xuất các ứng dụng và dịch vụ phân tán trở nên dễ dàng hơn rất nhiều. Loại phương tiện truyền thông Internet chính thức cho JSON là application/json
RFC 4627
. Tên tệp JSON sử dụng phần mở rộng .json
.
► Ký hiệu đối tượng JavaScript ( JSON
) là định dạng trao đổi dữ liệu độc lập, dựa trên văn bản, nhẹ. JSON đã được sử dụng để trao đổi dữ liệu giữa các ứng dụng được viết bằng bất kỳ ngôn ngữ lập trình nào.
Đối tượng JSON là một đối tượng duy nhất chứa hai hàm, phân tích cú pháp và xâu chuỗi, được sử dụng để phân tích và xây dựng các văn bản JSON.
- JSON.opesify tạo ra một Chuỗi phù hợp với ngữ pháp JSON sau đây.
- JSON.parse chấp nhận Chuỗi phù hợp với ngữ pháp JSON.
Phương pháp parseJSON sẽ được bao gồm trong Fourth Edition of ECMAScript
. Trong khi đó, việc triển khai JavaScript có sẵn tại json.org.
var objLiteral = {foo: 42}; // JavaScript Object
console.log('Object Literal : ', objLiteral ); // Object {foo: 42}foo: 42__proto__: Object
// This is a JSON String, like what you'd get back from an AJAX request.
var jsonString = '{"foo": 452}';
console.log('JOSN String : ', jsonString ); // {"foo": 452}
// This is how you deserialize that JSON String into an Object.
var serverResposnceObject = JSON.parse( jsonString );
console.log('Converting Ajax response to JavaScript Object : ', serverResposnceObject); // Object {foo: 42}foo: 42 __proto__: Object
// And this is how you serialize an Object into a JSON String.
var serverRequestJSON = JSON.stringify( objLiteral );
console.log('Reqesting server with JSON Data : ', serverRequestJSON); // '{"foo": 452}'
JSON là tập hợp con của JavaScript. Javascript được lấy từ Tiêu chuẩn Ngôn ngữ Lập trình ECMAScript.
► Bản thảo
ECMAScript đã phát triển thành một trong những ngôn ngữ lập trình mục đích chung được sử dụng rộng rãi nhất trên thế giới. Nó được biết đến như là ngôn ngữ được nhúng trong trình duyệt web nhưng cũng đã được áp dụng rộng rãi cho máy chủ và các ứng dụng nhúng. ECMAScript dựa trên một số công nghệ có nguồn gốc, nổi tiếng nhất là JavaScript
(Netscape Communications)) và JScript
(Tập đoàn Microsoft).) . Mặc dù trước năm 1994, ECMA được gọi là "Hiệp hội các nhà sản xuất máy tính châu Âu", sau năm 1994, khi tổ chức này trở nên toàn cầu, "nhãn hiệu" "Ecma" đã được giữ vì lý do lịch sử.
ECMAScript là ngôn ngữ, trong khi JavaScript, JScript và thậm chí ActionScript được gọi "Dialects"
.
Các phương ngữ đã được bắt nguồn từ cùng một ngôn ngữ. Chúng khá giống nhau vì chúng có nguồn gốc từ cùng một ngôn ngữ nhưng chúng đã trải qua một số thay đổi. Một phương ngữ là một biến thể trong chính ngôn ngữ. Nó có nguồn gốc từ một ngôn ngữ duy nhất.
- Ngôn ngữ SQL - Phương ngữ MySQL ngủ đông, Phương ngữ Oracle, .. có một số thay đổi hoặc thêm chức năng.
Thông tin về trình duyệt và máy tính của người dùng của bạn.
navigator.appName // "Netscape"
ECMAScript là ngôn ngữ kịch bản tạo thành nền tảng của JavaScript. .JavaScript
language resources
ECMA-262
Links
Initial Edition, June 1997
PDF.
2nd Edition, August 1998
PDF.
3rd Edition, December 1999
PDF.
5th Edition, December 2009
PDF.
5.1 Edition, June 2011
HTML.
6th Edition, June 2015
HTML.
7ᵗʰ Edition, June 2016
HTML.
8th edition, June 2017
HTML.
9th Edition, 2018
HTML.
LƯU Ý « Phiên bản thứ 4 của ECMAScript không được xuất bản vì công việc chưa hoàn thành .
JSON định nghĩa một tập hợp nhỏ các quy tắc định dạng cho biểu diễn di động của dữ liệu có cấu trúc.
► Các giá trị khóa phải được trích dẫn, chỉ các chuỗi được phép cho các khóa. Nếu bạn sử dụng khác với String, nó sẽ chuyển đổi thành String. Nhưng không nên sử dụng các khóa khác ngoài String. Kiểm tra một ví dụ như thế này - { 'key':'val' }
hơnRFC 4627 - jsonformatter
var storage = {
0 : null,
1 : "Hello"
};
console.log( storage[1] ); // Hello
console.log( JSON.stringify( storage ) ); // {"0":null,"1":"Hello","2":"world!"}
var objLiteral = {'key1':'val1'};
var arr = [10, 20], arr2 = [ 'Yash', 'Sam' ];
var obj = { k: 'v' }, obj2 = { k2: 'v2' };
var fun = function keyFun() {} ;
objLiteral[ arr ] = 'ArrayVal'; objLiteral[ arr2 ] = 'OverridenArrayVal';
objLiteral[ obj ] = 'ObjectVal'; objLiteral[ obj2 ] = 'OverridenObjectVal';
objLiteral[ fun ] = 'FunctionVal';
console.log( objLiteral );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log( JSON.stringify( objLiteral ) );
// {"key1":"val1","10,20":"ArrayVal","Yash,Sam":"OverridenArrayVal","[object Object]":"OverridenObjectVal","function keyFun() {}":"FunctionVal"}
console.log( JSON.parse( JSON.stringify( objLiteral ) ) );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log('Accessing Array Val : ', objLiteral[ [10,20] ] );
console.log('Accessing Object Val : ', objLiteral[ '[object Object]' ] );
console.log('Accessing Function Val : ', objLiteral[ 'function keyFun() {}' ] );
► Các chuỗi JSON phải được trích dẫn bằng "và không". Một chuỗi rất giống với chuỗi C hoặc Java. Các chuỗi phải được gói trong dấu ngoặc kép.
- Chữ là giá trị cố định, không phải là biến, mà bạn thực sự cung cấp trong tập lệnh của mình.
- Chuỗi là một chuỗi gồm 0 hoặc nhiều ký tự được gói trong dấu ngoặc kép với dấu gạch chéo ngược, ký hiệu tương tự được sử dụng trong hầu hết các ngôn ngữ lập trình.
- - Biểu tượng đặc biệt được phép trong Chuỗi nhưng không được khuyến nghị sử dụng.
- \ "- Các ký tự đặc biệt có thể được thoát. Nhưng không được đề xuất để thoát (') Dấu ngoặc đơn. Ở chế độ Nghiêm, nó sẽ ném và Lỗi -
SyntaxError: Unexpected token ' in JSON
Kiểm tra mã này { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
qua các Chỉnh sửa JSON trực tuyến.Modes
notStrict
,
Strinct
.
var jsonString = "{'foo': 452}"; // {'foo': 452}
var jsonStr = '{"foo": 452}'; // {"foo": 452}
JSON.parse( jsonString ); // Unexpected token ' in JSON at position 1(…)
JSON.parse( jsonStr ); // Object {foo: 452}
objLiteral['key'] = 'val'; // Object {foo: 42, key: "val"}
objLiteral.key2 = 'val';
// objLiteral.key\n3 - SyntaxError: Invalid or unexpected token
objLiteral['key\n3'] = 'val'; // Object {"foo": "42", key: "val", key2: "val", "key↵3": "val"}
JSON.stringify( objLiteral ); // {"foo":"42","key":"val","key2":"val","key\n3":"val"}
Object accessors tài sản cung cấp quyền truy cập vào các thuộc tính của một đối tượng bằng cách sử dụng các ký hiệu dấu chấm hoặc ký hiệu khung.
► Bạn có phạm vi giá trị hạn chế hơn (ví dụ: không cho phép chức năng). Một giá trị có thể là một chuỗi trong dấu ngoặc kép, số, boolean, null, đối tượng hoặc mảng. Các cấu trúc này có thể được lồng nhau.
var objLiteral = {};
objLiteral.funKey = function sayHello() {
console.log('Object Key with function as value - Its outcome message.');
};
objLiteral['Key'] = 'Val';
console.log('Object Literal Fun : ', objLiteral );
// Object Literal Fun : Object {Key: "Val"}Key: "Val"funKey: sayHello()__proto__: Object
console.log( JSON.stringify( objLiteral ) ); // {"Key":"Val"}
► JavaScript
là triển khai phổ biến nhất của Tiêu chuẩn ECMAScript. Các tính năng cốt lõi của Javascript dựa trên tiêu chuẩn ECMAScript, nhưng Javascript cũng có các tính năng bổ sung khác không có trong thông số / tiêu chuẩn ECMA. Mỗi trình duyệt có một trình thông dịch JavaScript.
JavaScript là một ngôn ngữ được gõ động. Điều đó có nghĩa là bạn không phải chỉ định loại dữ liệu của một biến khi bạn khai báo nó và các loại dữ liệu được chuyển đổi tự động khi cần trong quá trình thực thi tập lệnh.
Literals
:
'37' - 7 // 30
'37' + 7 // "377"
+'37' + 7 // 44
+'37' // 37
'37' // "37"
parseInt('37'); // 37
parseInt('3.7'); // 3
parseFloat(3.7); // 3.7
// An alternative method of retrieving a number from a string is with the + (unary plus) operator:
+'3.7' // 3.7
Object literals
RFC 7159
Một cấu trúc đối tượng được biểu diễn dưới dạng một cặp dấu ngoặc nhọn bao quanh 0 hoặc nhiều cặp tên / giá trị (hoặc thành viên). Một tên là một chuỗi. Một dấu hai chấm xuất hiện sau mỗi tên, tách tên khỏi giá trị. Dấu phẩy đơn tách một giá trị từ một tên sau. Tên trong một đối tượng NÊN là duy nhất.
ECMAScript hỗ trợ kế thừa dựa trên nguyên mẫu. Mỗi hàm tạo có một nguyên mẫu liên quan và mọi đối tượng được tạo bởi hàm tạo đó có một tham chiếu ngầm đến nguyên mẫu (được gọi là nguyên mẫu của đối tượng) được liên kết với hàm tạo của nó. Hơn nữa, một nguyên mẫu có thể có một tham chiếu ngầm không null đến nguyên mẫu của nó, v.v. đây được gọi là chuỗi nguyên mẫu.
Trong một ngôn ngữ hướng đối tượng dựa trên lớp, nói chung, trạng thái được thực hiện bởi các thể hiện, các phương thức được thực hiện bởi các lớp và kế thừa chỉ là cấu trúc và hành vi. Trong ECMAScript, trạng thái và phương thức được thực hiện bởi các đối tượng và cấu trúc, hành vi và trạng thái đều được kế thừa.
Nguyên mẫu là một đối tượng được sử dụng để thực hiện kế thừa cấu trúc, trạng thái và hành vi trong ECMAScript. Khi một hàm tạo tạo một đối tượng, đối tượng đó sẽ tham chiếu ngầm định nguyên mẫu liên kết của hàm tạo với mục đích giải quyết các tham chiếu thuộc tính. Nguyên mẫu liên quan của hàm tạo có thể được tham chiếu bởi biểu thức constructor.prototype của chương trình và các thuộc tính được thêm vào nguyên mẫu của đối tượng được chia sẻ, thông qua kế thừa, bởi tất cả các đối tượng chia sẻ nguyên mẫu.