🔫 JSON : ทางเลือกที่ปราศจากไขมันกับ XML
JSON ได้รับการยอมรับอย่างกว้างขวางจากผู้ที่พบว่าทำให้การผลิตแอพพลิเคชั่นและบริการแบบกระจายง่ายขึ้น อย่างเป็นทางการอินเทอร์เน็ตประเภทสื่อ JSON application/json
RFC 4627
คือ ชื่อไฟล์ JSON .json
ใช้นามสกุล
►สัญลักษณ์วัตถุ JavaScript ( JSON
) เป็นรูปแบบการแลกเปลี่ยนข้อมูลที่เป็นข้อความที่มีน้ำหนักเบาและไม่ขึ้นกับภาษา JSON ถูกใช้เพื่อแลกเปลี่ยนข้อมูลระหว่างแอปพลิเคชันที่เขียนด้วยภาษาการเขียนโปรแกรมใด ๆ
วัตถุ JSON เป็นวัตถุเดียวที่มีสองฟังก์ชั่นการแยกวิเคราะห์และ stringify ที่ใช้ในการแยกวิเคราะห์และสร้างข้อความ JSON
- JSON.stringify สร้างสตริงที่สอดคล้องกับไวยากรณ์ JSON ต่อไปนี้
- JSON.parse ยอมรับสตริงที่สอดคล้องกับไวยากรณ์ JSON
วิธี parseJSON Fourth Edition of ECMAScript
จะถูกรวมอยู่ใน ในระหว่างนี้มีการใช้งาน JavaScript ที่ 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 เป็นส่วนย่อยของ JavaScript Javascriptมาจากมาตรฐานภาษาการเขียนโปรแกรม ECMAScript
► ECMAScript
ECMAScript ได้เติบโตขึ้นเป็นหนึ่งในภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปที่ใช้กันอย่างแพร่หลายมากที่สุดในโลก เป็นที่รู้จักกันดีในฐานะภาษาที่ฝังอยู่ในเว็บเบราว์เซอร์ แต่ได้รับการยอมรับอย่างกว้างขวางสำหรับเซิร์ฟเวอร์และแอปพลิเคชันแบบฝัง ECMAScript อยู่บนพื้นฐานของเทคโนโลยีที่มีต้นกำเนิดหลายเป็นที่รู้จักมากที่สุดJavaScript
(Netscape Communications)) และJScript
(Microsoft Corporation).) แม้ว่าก่อนปี 2537 ECMA เป็นที่รู้จักในนาม "สมาคมผู้ผลิตคอมพิวเตอร์แห่งยุโรป" หลังจากปี 2537 เมื่อองค์กรกลายเป็นสากล "เครื่องหมายการค้า" "Ecma" ก็ถูกเก็บรักษาไว้ด้วยเหตุผลทางประวัติศาสตร์
ECMAScript ภาษาในขณะ JavaScript, JScript และแม้กระทั่ง ActionScript "Dialects"
จะเรียกว่า
ภาษาถิ่นได้มาจากภาษาเดียวกัน พวกเขาค่อนข้างคล้ายกันเนื่องจากพวกเขาได้รับมาจากภาษาเดียวกัน แต่พวกเขาได้รับการเปลี่ยนแปลงบางอย่าง ภาษาถิ่นคือความแปรปรวนในภาษานั้น ๆ มันมาจากภาษาเดียว
- ภาษา SQL - Hibernate MySQL Dialect, Oracle Dialect, .. ซึ่งมีการเปลี่ยนแปลงหรือเพิ่มฟังก์ชันการทำงาน
ข้อมูลเกี่ยวกับเบราว์เซอร์และคอมพิวเตอร์ของผู้ใช้ของคุณ
navigator.appName // "Netscape"
ECMAScript เป็นภาษาสคริปต์ที่เป็นพื้นฐานของ 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.
หมายเหตุ« ฉบับที่ 4ของ ECMAScript ไม่ได้รับการตีพิมพ์เป็นงานที่ยังไม่สมบูรณ์
JSON กำหนดกฎการจัดรูปแบบชุดเล็ก ๆ สำหรับการแสดงข้อมูลโครงสร้างที่เคลื่อนย้ายได้
►ต้องป้อนค่าคีย์โดยอนุญาตให้ใช้คีย์ได้เท่านั้น ถ้าคุณใช้นอกเหนือจาก String มันจะแปลงเป็น String แต่ไม่แนะนำให้ใช้กุญแจอื่นนอกเหนือจาก String ตรวจสอบตัวอย่างเช่นนี้ - { 'key':'val' }
มากกว่าRFC 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() {}' ] );
►สตริง JSON ต้องอ้างอิงด้วย "และไม่ใช่" สตริงเป็นอย่างมากเหมือนกับสตริง C หรือ Java สตริงควรจะอยู่ในเครื่องหมายคำพูดคู่
- ตัวอักษรเป็นค่าคงที่ไม่ใช่ตัวแปรที่คุณให้ไว้ในสคริปต์ของคุณ
- สตริงคือลำดับของอักขระศูนย์หรือมากกว่าที่อยู่ในเครื่องหมายคำพูดพร้อมด้วยเครื่องหมายทับขวาเครื่องหมายทับขวาซึ่งเป็นสัญกรณ์เดียวกับที่ใช้ในภาษาการเขียนโปรแกรมส่วนใหญ่
- 🔫 - สัญลักษณ์พิเศษได้รับอนุญาตใน String แต่ไม่แนะนำให้ใช้
- \ "- ตัวละครพิเศษสามารถหนีออกมาได้ แต่ไม่แนะนำให้หลบหนี (') อัญประกาศเดี่ยวในโหมดเข้มงวดมันจะโยนและผิดพลาด -
SyntaxError: Unexpected token ' in JSON
ตรวจสอบด้วยรหัสนี้{ "Hai\" \n Team 🔫":5, "Bye \'": 7 }
ผ่านทาง JSON Edtions ออนไลน์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"}
วัตถุaccessors ทรัพย์สิน ให้สามารถเข้าถึงคุณสมบัติของวัตถุโดยใช้สัญกรณ์จุดหรือสัญกรณ์วงเล็บ
►คุณมีช่วงของค่าที่ จำกัด มากขึ้น (เช่นไม่มีฟังก์ชั่นที่อนุญาต) ค่าสามารถเป็นสตริงในเครื่องหมายคำพูดคู่, ตัวเลข, บูลีน, null, วัตถุหรืออาร์เรย์ โครงสร้างเหล่านี้สามารถซ้อนกันได้
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
คือการใช้งาน ECMAScript Standard ที่ได้รับความนิยมสูงสุด คุณสมบัติหลักของ Javascript นั้นเป็นไปตามมาตรฐาน ECMAScript แต่ Javascript ยังมีคุณสมบัติเพิ่มเติมอื่น ๆ ที่ไม่ได้อยู่ในข้อกำหนด / มาตรฐานของ ECMA เบราว์เซอร์ทุกตัวมีล่าม JavaScript
JavaScript เป็นภาษาที่พิมพ์แบบไดนามิก ซึ่งหมายความว่าคุณไม่ต้องระบุชนิดข้อมูลของตัวแปรเมื่อคุณประกาศตัวแปรนั้นและประเภทข้อมูลจะถูกแปลงโดยอัตโนมัติตามต้องการระหว่างการเรียกใช้งานสคริปต์
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
โครงสร้างวัตถุถูกแสดงเป็นคู่ของวงเล็บปีกกาที่ล้อมรอบคู่ชื่อ / ค่าเป็นศูนย์หรือมากกว่า (หรือสมาชิก) ชื่อคือสตริง เครื่องหมายโคลอนเดียวมาหลังชื่อแต่ละชื่อโดยแยกชื่อออกจากค่า เครื่องหมายจุลภาคเดียวคั่นค่าจากชื่อต่อไปนี้ ชื่อภายในวัตถุควรเป็นชื่อเฉพาะ
ECMAScript รองรับการสืบทอดตามต้นแบบ คอนสตรัคทุกคนมีต้นแบบที่เกี่ยวข้องและทุกวัตถุที่สร้างขึ้นโดยคอนสตรัคที่มีการอ้างอิงโดยนัยไปยังต้นแบบ (เรียกว่าต้นแบบของวัตถุ) ที่เกี่ยวข้องกับตัวสร้างของมัน นอกจากนี้ต้นแบบอาจมีการอ้างอิงที่ไม่เป็นค่าว่างโดยนัยกับต้นแบบและอื่น ๆ ; สิ่งนี้เรียกว่าโซ่ต้นแบบ
ในภาษาที่เน้นวัตถุในระดับคลาสโดยทั่วไปสถานะจะถูกดำเนินการโดยอินสแตนซ์วิธีการดำเนินการโดยคลาสและการสืบทอดเป็นเพียงโครงสร้างและพฤติกรรม ใน ECMAScript สถานะและวิธีดำเนินการโดยวัตถุและโครงสร้างพฤติกรรมและสถานะล้วนได้รับการสืบทอด
ต้นแบบเป็นวัตถุที่ใช้ในการสร้างโครงสร้างสถานะและการสืบทอดพฤติกรรมใน ECMAScript เมื่อตัวสร้างสร้างวัตถุวัตถุนั้นโดยปริยายอ้างอิงต้นแบบที่เกี่ยวข้องของตัวสร้างเพื่อวัตถุประสงค์ในการแก้ไขการอ้างอิงคุณสมบัติ ต้นแบบที่เกี่ยวข้องของคอนสตรัคสามารถอ้างอิงได้โดยนิพจน์โปรแกรม constructor.prototype และคุณสมบัติที่เพิ่มเข้ากับต้นแบบของออบเจ็กต์จะถูกแชร์ผ่านการสืบทอดโดยออบเจ็กต์ทั้งหมดที่แชร์ต้นแบบ