🔫 JSON : la alternativa libre de grasa a XML
JSON ha sido ampliamente adoptado por personas que descubrieron que facilitaba mucho la producción de aplicaciones y servicios distribuidos. El tipo de medio oficial de Internet para JSON es application/json
RFC 4627
. Los nombres de archivo JSON usan la extensión .json
.
► JavaScript Object Notation ( JSON
) es un formato de intercambio de datos ligero, basado en texto e independiente del idioma. JSON se ha utilizado para intercambiar datos entre aplicaciones escritas en cualquier lenguaje de programación.
El objeto JSON es un objeto único que contiene dos funciones, analizar y stringify, que se utilizan para analizar y construir textos JSON.
- JSON.stringify produce una cadena que se ajusta a la siguiente gramática JSON.
- JSON.parse acepta una cadena que se ajusta a la gramática JSON.
El método parseJSON se incluirá en el Fourth Edition of ECMAScript
. Mientras tanto, una implementación de JavaScript está disponible en 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 es un subconjunto de JavaScript. Javascript se deriva del estándar de lenguaje de programación ECMAScript.
► ECMAScript
ECMAScript se ha convertido en uno de los lenguajes de programación de propósito general más utilizados en el mundo. Es mejor conocido como el lenguaje integrado en los navegadores web, pero también se ha adoptado ampliamente para servidores y aplicaciones integradas. ECMAScript se basa en varias tecnologías de origen, el ser más conocido JavaScript
(Netscape Communications)) y JScript
(Microsoft Corporation) . Aunque antes de 1994, ECMA era conocida como "Asociación Europea de Fabricantes de Computadoras", después de 1994, cuando la organización se volvió global, la "marca registrada" "Ecma" se mantuvo por razones históricas.
ECMAScript es el lenguaje, mientras que JavaScript, JScript e incluso ActionScript se llaman "Dialects"
.
Los dialectos se han derivado del mismo idioma. Son bastante similares entre sí, ya que se derivan del mismo idioma pero han sufrido algunos cambios. Un dialecto es una variación en el lenguaje mismo. Se deriva de un solo idioma.
- Lenguaje SQL: Hibernate MySQL Dialect, Oracle Dialect, ... que tienen algunos cambios o funcionalidades adicionales.
Información sobre el navegador y la computadora de sus usuarios.
navigator.appName // "Netscape"
ECMAScript es el lenguaje de script que forma la base de 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.
NOTA «La cuarta edición de ECMAScript no se publicó porque el trabajo estaba incompleto .
JSON define un pequeño conjunto de reglas de formato para la representación portátil de datos estructurados.
► Los valores de las claves deben estar entre comillas, solo se permiten cadenas para las claves. Si usa otro que no sea String, se convertirá en String. Pero no se recomienda usar otras teclas que no sean String. Mira un ejemplo como este - { 'key':'val' }
overRFC 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() {}' ] );
► Las cadenas JSON se deben citar con "y no '. Una cadena es muy parecida a una cadena C o Java. Las cadenas deben estar entre comillas dobles.
- Los literales son valores fijos, no variables, que usted proporciona literalmente en su secuencia de comandos.
- Una cadena es una secuencia de cero o más caracteres entre comillas con escape de barra invertida, la misma notación utilizada en la mayoría de los lenguajes de programación.
- 🔫 - Se permiten símbolos especiales en String pero no se recomienda su uso.
- \ "- Se pueden escapar caracteres especiales. Pero no se recomienda escapar (') Comillas simples. En modo estricto arrojará y Error -
SyntaxError: Unexpected token ' in JSON
Verifique con este código { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
sobre las Ediciones JSON en línea.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"}
Los accesores de propiedades de objeto proporcionan acceso a las propiedades de un objeto mediante la notación de puntos o la notación de corchetes.
► Tiene un rango de valores más limitado (por ejemplo, no se permiten funciones). Un valor puede ser una cadena entre comillas dobles, número, booleano, nulo, objeto o matriz. Estas estructuras pueden estar anidadas.
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
es la implementación más popular del Estándar ECMAScript. Las características principales de Javascript se basan en el estándar ECMAScript, pero Javascript también tiene otras características adicionales que no están en las especificaciones / estándar de ECMA. Cada navegador tiene un intérprete de JavaScript.
JavaScript es un lenguaje de tipo dinámico. Eso significa que no tiene que especificar el tipo de datos de una variable cuando la declara, y los tipos de datos se convierten automáticamente según sea necesario durante la ejecución del script.
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
Una estructura de objeto se representa como un par de llaves entre cero o más pares de nombre / valor (o miembros). Un nombre es una cadena. Después de cada nombre, aparecen dos puntos, que separan el nombre del valor. Una coma simple separa un valor del siguiente nombre. Los nombres dentro de un objeto DEBEN ser únicos.
ECMAScript admite herencia basada en prototipos. Cada constructor tiene un prototipo asociado, y cada objeto creado por ese constructor tiene una referencia implícita al prototipo (llamado prototipo del objeto) asociado con su constructor. Además, un prototipo puede tener una referencia implícita no nula a su prototipo, y así sucesivamente; Esto se llama la cadena prototipo.
En un lenguaje orientado a objetos basado en clases, en general, el estado es llevado por instancias, los métodos son llevados por clases, y la herencia es solo de estructura y comportamiento. En ECMAScript, el estado y los métodos son transportados por objetos, y la estructura, el comportamiento y el estado son todos heredados.
Un prototipo es un objeto utilizado para implementar la herencia de estructura, estado y comportamiento en ECMAScript. Cuando un constructor crea un objeto, ese objeto hace referencia implícita al prototipo asociado del constructor con el fin de resolver referencias de propiedad. El prototipo asociado al constructor puede ser referenciado por la expresión del programa constructor.prototype, y las propiedades agregadas al prototipo de un objeto son compartidas, a través de la herencia, por todos los objetos que comparten el prototipo.