🔫 JSON : l'alternative sans gras au XML
JSON a été largement adopté par les personnes qui ont découvert qu'il facilitait la production d'applications et de services distribués. Le type de média Internet officiel pour JSON est application/json
RFC 4627
. Les noms de fichiers JSON utilisent l'extension .json
.
► JavaScript Object Notation ( JSON
) est un format d'échange de données léger, basé sur du texte et indépendant du langage. JSON a été utilisé pour échanger des données entre des applications écrites dans n'importe quel langage de programmation.
L'objet JSON est un objet unique qui contient deux fonctions, analyser et stringifier, qui sont utilisées pour analyser et construire des textes JSON.
- JSON.stringify produit une chaîne conforme à la grammaire JSON suivante.
- JSON.parse accepte une chaîne conforme à la grammaire JSON.
La méthode parseJSON sera incluse dans le Fourth Edition of ECMAScript
. En attendant, une implémentation JavaScript est disponible sur 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 est un sous-ensemble de JavaScript. Javascript est dérivé de la norme de langage de programmation ECMAScript.
► ECMAScript
ECMAScript est devenu l'un des langages de programmation à usage général les plus utilisés au monde. Il est surtout connu comme le langage intégré dans les navigateurs Web, mais a également été largement adopté pour les applications serveur et intégrées. ECMAScript est basé sur plusieurs technologies d'origine, les plus connues étant JavaScript
(Netscape Communications)) et JScript
(Microsoft Corporation).) . Bien qu'avant 1994, l'ECMA était connue sous le nom d '"Association européenne des fabricants d'ordinateurs", après 1994, lorsque l'organisation est devenue mondiale, la "marque" "Ecma" a été conservée pour des raisons historiques.
ECMAScript est le langage, tandis que JavaScript, JScript et même ActionScript sont appelés "Dialects"
.
Les dialectes sont dérivés de la même langue. Ils sont assez similaires les uns aux autres car ils sont dérivés de la même langue mais ils ont subi quelques changements. Un dialecte est une variation de la langue elle-même. Il est dérivé d'une seule langue.
- Langage SQL - Hibernate MySQL Dialect, Oracle Dialect, .. qui ont quelques changements ou fonctionnalités ajoutées.
Informations sur le navigateur et l'ordinateur de vos utilisateurs.
navigator.appName // "Netscape"
ECMAScript est le langage de script qui constitue 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.
NOTE « 4ème édition d'ECMAScript non publiée car l'ouvrage était incomplet .
JSON définit un petit ensemble de règles de formatage pour la représentation portable des données structurées.
► Les valeurs de clé doivent être citées, seules les chaînes sont autorisées pour les clés. Si vous utilisez autre que String, il sera converti en String. Mais il n'est pas recommandé d'utiliser des clés autres que celles de String. Vérifiez un exemple comme celui-ci - { 'key':'val' }
terminé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() {}' ] );
► Les chaînes JSON doivent être entre guillemets "et non". Une chaîne ressemble beaucoup à une chaîne C ou Java. Les chaînes doivent être entourées de guillemets doubles.
- Les littéraux sont des valeurs fixes, pas des variables, que vous fournissez littéralement dans votre script.
- Une chaîne est une séquence de zéro ou plusieurs caractères entourés de guillemets avec échappement antislash, la même notation utilisée dans la plupart des langages de programmation.
- 🔫 - Les symboles spéciaux sont autorisés dans la chaîne mais ne sont pas recommandés à utiliser.
- \ "- Les caractères spéciaux peuvent être échappés. Mais il n'est pas recommandé d'échapper (') les guillemets simples. En mode Strict, il lancera et Erreur -
SyntaxError: Unexpected token ' in JSON
Vérifiez avec ce code { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
sur les éditions JSON en ligne.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"}
Les accesseurs de propriété d' objet permettent d'accéder aux propriétés d'un objet en utilisant la notation par points ou la notation par crochets.
► Vous avez une plage de valeurs plus limitée (par exemple, aucune fonction n'est autorisée). Une valeur peut être une chaîne entre guillemets doubles, nombre, booléen, null, objet ou tableau. Ces structures peuvent être imbriquées.
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
est l'implémentation la plus populaire de la norme ECMAScript. Les fonctionnalités principales de Javascript sont basées sur la norme ECMAScript, mais Javascript possède également d'autres fonctionnalités supplémentaires qui ne figurent pas dans les spécifications / normes ECMA. Chaque navigateur possède un interpréteur JavaScript.
JavaScript est un langage typé dynamiquement. Cela signifie que vous n'avez pas besoin de spécifier le type de données d'une variable lorsque vous la déclarez, et les types de données sont convertis automatiquement selon les besoins pendant l'exécution du 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
Une structure d'objet est représentée comme une paire de crochets entourant zéro ou plusieurs paires nom / valeur (ou membres). Un nom est une chaîne. Un deux-points vient après chaque nom, séparant le nom de la valeur. Une seule virgule sépare une valeur d'un nom suivant. Les noms dans un objet DEVRAIENT être uniques.
ECMAScript prend en charge l'héritage basé sur un prototype. Chaque constructeur a un prototype associé, et chaque objet créé par ce constructeur a une référence implicite au prototype (appelé prototype de l'objet) associé à son constructeur. En outre, un prototype peut avoir une référence implicite non nulle à son prototype, etc. c'est ce qu'on appelle la chaîne prototype.
Dans un langage orienté objet basé sur les classes, en général, l'état est porté par les instances, les méthodes sont portées par les classes et l'héritage ne concerne que la structure et le comportement. Dans ECMAScript, l'état et les méthodes sont portés par des objets, et la structure, le comportement et l'état sont tous hérités.
Un prototype est un objet utilisé pour implémenter l'héritage de structure, d'état et de comportement dans ECMAScript. Lorsqu'un constructeur crée un objet, cet objet fait implicitement référence au prototype associé au constructeur dans le but de résoudre les références de propriété. Le prototype associé au constructeur peut être référencé par l'expression de programme constructor.prototype, et les propriétés ajoutées au prototype d'un objet sont partagées, par héritage, par tous les objets partageant le prototype.