🔫 JSON : a alternativa sem gordura ao XML
O JSON foi amplamente adotado por pessoas que descobriram que tornava muito mais fácil produzir aplicativos e serviços distribuídos. O tipo de mídia oficial da Internet para JSON é application/json
RFC 4627
. Nomes de arquivos JSON usar a extensão .json
.
► JavaScript Object Notation ( JSON
) é um formato de intercâmbio de dados leve, baseado em texto e independente de idioma. JSON foi usado para trocar dados entre aplicativos escritos em qualquer linguagem de programação.
O objeto JSON é um único objeto que contém duas funções, analisar e stringify, usadas para analisar e construir textos JSON.
- JSON.stringify produz uma String em conformidade com a seguinte gramática JSON.
- JSON.parse aceita uma String em conformidade com a gramática JSON.
O método parseJSON será incluído no Fourth Edition of ECMAScript
. Enquanto isso, uma implementação JavaScript está disponível em 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 é um subconjunto de JavaScript. O Javascript foi derivado do ECMAScript Programming Language Standard.
► ECMAScript
O ECMAScript cresceu e se tornou uma das linguagens de programação de uso geral mais usadas no mundo. É mais conhecido como o idioma incorporado nos navegadores da Web, mas também foi amplamente adotado para servidores e aplicativos incorporados. O ECMAScript é baseado em várias tecnologias originárias, sendo as mais conhecidas JavaScript
(Netscape Communications) e JScript
(Microsoft Corporation).) . Embora antes de 1994, a ECMA fosse conhecida como "Associação Europeia de Fabricantes de Computadores", depois de 1994, quando a organização se tornou global, a "marca" "Ecma" foi mantida por razões históricas.
ECMAScript é a linguagem, enquanto JavaScript, JScript e até ActionScript são chamados "Dialects"
.
Os dialetos foram derivados do mesmo idioma. Eles são bastante parecidos entre si, pois foram derivados do mesmo idioma, mas sofreram algumas alterações. Um dialeto é uma variação no próprio idioma. É derivado de um único idioma.
- Linguagem SQL - Hibernate MySQL Dialect, Oracle Dialect, .. que apresentam algumas alterações ou funcionalidades adicionais.
Informações sobre o navegador e o computador de seus usuários.
navigator.appName // "Netscape"
ECMAScript é a linguagem de script que forma a base do 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 « 4ª edição do ECMAScript não publicada porque o trabalho estava incompleto .
JSON define um pequeno conjunto de regras de formatação para a representação portátil de dados estruturados.
► Os valores das chaves devem ser citados, apenas Strings são permitidas para chaves. Se você usar outro que não seja String, ele será convertido em String. Mas não é recomendável usar outras chaves além das de String. Veja um exemplo como este - { 'key':'val' }
acimaRFC 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() {}' ] );
► As strings JSON devem ser citadas com "e não". Uma string é muito parecida com uma string C ou Java. As strings devem ser colocadas entre aspas duplas.
- Literais são valores fixos, não variáveis, que você literalmente fornece em seu script.
- Uma string é uma sequência de zero ou mais caracteres entre aspas com escape de barra invertida, a mesma notação usada na maioria das linguagens de programação.
- Symbols - Símbolos especiais são permitidos em String, mas não são recomendados.
- \ "- Caracteres especiais podem ser escapados. Mas não é recomendado escapar (') aspas simples. No modo Estrito, ele lançará e Error -
SyntaxError: Unexpected token ' in JSON
Verifique com este código as { "Hai\" \n Team 🔫":5, "Bye \'": 7 }
edições JSON online.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"}
Os acessadores de propriedade de objeto fornecem acesso às propriedades de um objeto usando a notação de ponto ou de colchete.
► Você tem uma faixa de valores mais limitada (por exemplo, nenhuma função é permitida). Um valor pode ser uma cadeia de caracteres entre aspas duplas, número, booleano, nulo, objeto ou matriz. Essas estruturas podem ser aninhadas.
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
é a implementação mais popular do padrão ECMAScript. Os principais recursos do Javascript são baseados no padrão ECMAScript, mas o Javascript também possui outros recursos adicionais que não estão nas especificações / padrão do ECMA. Todo navegador tem um intérprete de JavaScript.
JavaScript é uma linguagem de tipo dinâmico. Isso significa que você não precisa especificar o tipo de dados de uma variável quando a declara, e os tipos de dados são convertidos automaticamente conforme necessário durante a execução do 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
Uma estrutura de objeto é representada como um par de colchetes envolvendo zero ou mais pares de nome / valor (ou membros). Um nome é uma string. Um único dois pontos vem após cada nome, separando o nome do valor. Uma única vírgula separa um valor do seguinte nome. Os nomes dentro de um objeto devem ser únicos.
O ECMAScript suporta herança baseada em protótipo. Todo construtor tem um protótipo associado e todo objeto criado por esse construtor tem uma referência implícita ao protótipo (chamado protótipo do objeto) associado ao seu construtor. Além disso, um protótipo pode ter uma referência implícita não nula ao seu protótipo, e assim por diante; isso é chamado de cadeia de protótipo.
Em uma linguagem orientada a objetos baseada em classe, em geral, o estado é carregado por instâncias, os métodos são carregados por classes e a herança é apenas de estrutura e comportamento. No ECMAScript, o estado e os métodos são transportados por objetos, e a estrutura, o comportamento e o estado são todos herdados.
Um protótipo é um objeto usado para implementar a herança de estrutura, estado e comportamento no ECMAScript. Quando um construtor cria um objeto, esse objeto faz referência implícita ao protótipo associado ao construtor com o objetivo de resolver as referências de propriedade. O protótipo associado ao construtor pode ser referenciado pela expressão do programa constructor.prototype, e as propriedades adicionadas ao protótipo de um objeto são compartilhadas, por herança, por todos os objetos que compartilham o protótipo.