SON JSON : обезжиренная альтернатива XML
JSON получил широкое распространение среди людей, которые обнаружили, что это значительно облегчает создание распределенных приложений и сервисов. Официальный тип интернет - СМИ для JSON это application/json
RFC 4627
. В именах файлов JSON используется расширение .json
.
► JavaScript Object Notation ( JSON
) - это легкий текстовый формат обмена данными, не зависящий от языка. JSON используется для обмена данными между приложениями, написанными на любом языке программирования.
JSON-объект - это отдельный объект, который содержит две функции, parse и 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.) .Хотя до 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. Строки должны быть заключены в двойные кавычки.
- Литералы - это фиксированные значения, а не переменные, которые вы буквально предоставляете в своем скрипте.
- Строка - это последовательность из нуля или более символов, заключенная в кавычки с обратной косой чертой, то же самое обозначение используется в большинстве языков программирования.
- Special - Специальные символы разрешены в строке, но не рекомендуется использовать.
- \ "- Специальные символы могут быть экранированы. Но не рекомендуется экранировать (') Одинарные кавычки. В строгом режиме он выбрасывает и ошибка -
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"}
Объект аксессоры собственности обеспечивают доступ к свойствам объекта с помощью точечной нотации или брекета обозначения.
► У вас есть более ограниченный диапазон значений (например, функции не допускаются). Значение может быть строкой в двойных кавычках, числом, логическим значением, нулем, объектом или массивом. Эти структуры могут быть вложенными.
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, а свойства, добавленные в прототип объекта, передаются по наследству всем объектам, совместно использующим прототип.