Si convierto el objeto anterior a JSON usando var jSonString = JSON.stringify(testObject);
, ¿cuál es la diferencia entre el 2 (JS obj y JSON)?
JSON es un formato de intercambio de datos. Es un estándar que describe cómo las listas ordenadas y los mapas desordenados, las cadenas booleanas y los números se pueden representar en una cadena. Al igual que XML y YAML es una forma de pasar información estructurada entre idiomas, JSON es lo mismo. Un objeto JavaScript, por otro lado, es de tipo físico. Al igual que una matriz PHP, una clase / estructura C ++, un objeto JavaScript es un tipo interno de JavaScript.
Aquí hay una historia. Imaginemos que ha comprado algunos muebles de una tienda y quiere que se los entreguen. Sin embargo, el único que queda en stock es el modelo de pantalla, pero acepta comprarlo.
En la tienda, la cómoda que ha comprado es un objeto vivo:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
Sin embargo, no puede enviar una cómoda en la publicación, por lo que lo desmantela (léalo, colóquelo en cadena). Ahora es inútil en términos de muebles. Ahora es JSON. Está en forma de paquete plano.
{"color":"red","numberOfDrawers":4}
Cuando lo recibe, reconstruye la cómoda (léalo, analícelo). Ahora está de vuelta en forma de objeto.
La razón detrás de JSON / XML y YAML es permitir que los datos se transfieran entre lenguajes de programación en un formato que ambos lenguajes participantes puedan entender; no puede darle a PHP o C ++ su objeto JavaScript directamente; porque cada idioma representa un objeto diferente bajo el capó. Sin embargo, porque hemos encadenado el objeto en notación JSON; es decir, una forma estandarizada de representar datos, podemos transmitir la representación JSON del objeto a otro idioma (C ++, PHP), pueden recrear el objeto JavaScript que teníamos en su propio objeto basado en la representación JSON del objeto.
Es importante tener en cuenta que JSON no puede representar funciones o fechas. Si intenta stringificar un objeto con un miembro de función, la función se omitirá de la representación JSON. Una fecha se convertirá en una cadena;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"