Se eu converter o objeto acima em JSON usando var jSonString = JSON.stringify(testObject);
, qual é a diferença entre os 2 (JS obj e JSON)?
JSON é um formato de intercâmbio de dados. É um padrão que descreve como listas ordenadas e mapas não ordenados, strings booleanos e números podem ser representados em uma string. Assim como XML e YAML é uma maneira de transmitir informações estruturadas entre idiomas, o JSON é o mesmo. Um objeto JavaScript, por outro lado, é do tipo físico. Assim como uma matriz PHP, uma classe / estrutura C ++, um objeto JavaScript é um tipo interno ao JavaScript.
Aqui está uma história. Vamos imaginar que você comprou alguns móveis de uma loja e deseja que eles sejam entregues. No entanto, o único que resta em estoque é o modelo de exibição, mas você concorda em comprá-lo.
Na loja, a cômoda que você comprou é um objeto vivo:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
No entanto, você não pode enviar uma cômoda na postagem, então você a desmonta (leia, especifique). Agora é inútil em termos de móveis. Agora é JSON. Está em forma de embalagem plana.
{"color":"red","numberOfDrawers":4}
Ao recebê-lo, você reconstrói as cômodas (leia, analise). Agora está de volta em uma forma de objeto.
O motivo por trás do JSON / XML e YAML é permitir que os dados sejam transferidos entre linguagens de programação em um formato que ambas as línguas participantes possam entender; você não pode fornecer diretamente ao PHP ou C ++ seu objeto JavaScript; porque cada idioma representa um objeto de forma diferente por baixo do capô. No entanto, porque codificamos o objeto na notação JSON; ou seja, uma maneira padronizada de representar dados, podemos transmitir a representação JSON do objeto para outro idioma (C ++, PHP), eles podem recriar o objeto JavaScript que tínhamos em seu próprio objeto com base na representação JSON do objeto.
É importante observar que o JSON não pode representar funções ou datas. Se você tentar especificar um objeto com um membro da função, a função será omitida da representação JSON. Uma data será convertida em uma sequência;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"