🔫 JSON : Нежирна альтернатива XML
JSON широко прийняли люди, які виявили, що це значно спростило виробництво розподілених додатків та послуг. Офіційним типом Інтернет-ЗМІ для JSON є application/json
RFC 4627
. Назви файлів JSON використовують розширення .json
.
► JavaScript Object Notation ( JSON
) - це легкий, текстовий, незалежний від мови формат обміну даними. JSON використовувався для обміну даними між програмами, написаними будь-якою мовою програмування.
Об'єкт JSON - це єдиний об'єкт, який містить дві функції, розбір та строфікацію, які використовуються для розбору та побудови текстів 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) . Хоча до 1994 року ECMA була відома як "Європейська асоціація виробників комп'ютерів", після 1994 року, коли організація стала глобальною, "торгова марка" "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. Струни повинні бути загорнуті у подвійні лапки.
- Літерали - це фіксовані значення, а не змінні, які ви буквально надаєте у своєму сценарії.
- Рядок - це послідовність нульових або більше символів, загорнутих у лапки із зворотним косою рисою, те саме позначення, яке використовується у більшості мов програмування.
- 🔫 - Спеціальні символи дозволені в рядку, але їх не рекомендується використовувати.
- \ "- Спеціальних символів можна уникнути. Але не рекомендується бігти (') Одиночні котирування. У суворому режимі він кине і помилка -
SyntaxError: Unexpected token ' in JSON
Перевірте цей код { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
за допомогою онлайн-видань JSON.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"}
Об'єкт аксессор власності забезпечують доступ до властивостей об'єкта за допомогою точкового нотації або брекета позначення.
► У вас обмежений діапазон значень (наприклад, заборонені функції). Значенням може бути рядок у подвійних лапки, число, булеве значення, 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. Основні особливості 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, а властивості, додані до прототипу об'єкта, дістаються шляхом успадкування всіма об'єктами, що поділяють прототип.