> Faqs > Qué diferencia hay entre un JSON y un objeto JavaScript?

Qué diferencia hay entre un JSON y un objeto JavaScript?

Hola, mi pregunta consiste en saber cuál es la diferencia entre un JSON y un objeto JavaScript.

Respuestas

Bueno, son dos cosas distintas desde un punto de vista conceptual. Realmente tienen en común la sintaxis, q no es poco, pero incluso ahí hay diferencias.

  • JSON es una notación. Es una manera de expresar datos con una sintaxis determinada. Se escriben en archivos de texto plano y las reglas de la sintaxis están heredadas de la sintaxis de los literales de objeto Javascript.
  • Por su parte, un objeto es un elemento que forma parte de un lenguaje de programación, que tiene sentido en el contexto de un lenguaje o de la ejecución de una aplicación.

Por tanto, con un objeto puedes hacer cosas, tiene funcionalidades que puedes invocar sobre él, puedes cambiar sus datos en tiempo de ejecución y puedes hacer muchas más cosas, ya que es una entidad que puede tener su ciclo de vida dentro de una aplicación web.

Sin embargo, un JSON es una cadena de texto que contiene datos que se organizan mediante claves (nombres de propiedades) y valores (valores de las propiedades). Esa cadena de texto es la que es, es lo que haya escrito en el archivo de texto y no tiene ciclo de vida ni funcionalidades asociadas. Cuando el lenguaje de programación de turno la procesa (no necesariamente javascript puesto que puedes consumir json en cualquier lenguaje) puede convertirla en un objeto y entonces ese objeto podrá tener su vida propia, evolucionar con la aplicación, cambiar los valores de sus propiedades, etc.

Pero si estás preguntando más sobre cuáles son las diferencias entre notaciones de objetos literales en Javascript y los datos en un JSON, también existen algunas diferencias:

Tipo de datos: JSON solo soporta un subconjunto limitado de tipos de datos de Javascript: números, strings, booleanos, arrays, objetos y null. JavaScript, sin embargo, también soporta más cosas, como las funciones, puedes hacer clases con funcionalidades, puedes tener objetos iterlables y no solamente arrays. Es como más rico.

Funciones: Ya mencionado en el punto anterior pero muy importante, en un objeto JavaScript, puedes tener propiedades que son funciones. Serían como métodos de los objetos. En un JSON todo lo que tienes como valores de las propiedades deben ser datos, dentro de los tipos soportados, no funciones.

Sintaxis: JSON tiene una sintaxis bastante más estricta. Por ejemplo, en JSON, las claves o nombres de las propiedades siempre deben estar entre comillas dobles (""), si no tendrías un error de sintaxis. En el código de Javacript si defines un literal de objeto puedes poner propiedades sin comillas. (solamente serían necesarias las comillas en el caso que la clave tenga espacios u otros caracteres especiales como signos más o menos, que podrían confundirse con operadores)

Codificación: JSON siempre se tiene que codificar con UTF-8 mientras que el UTF-8 en un código de un archivo en la web es recomendable y no es un requisito absolutamente necesario.

Santiago
571 18 45 21
Te agradezco mucho la respuesta!!

Aparte que son dos cosas distintas, creo que lo más reseñable es que un objeto JSON tiene solamente datos mientras que un objeto Javascript puede tener métodos también.

De todos modos un objeto JSON es solo una cantidad de datos que se define con intención de compartirla entre sistemas. Su notación es la misma que la de la notación de los literales de objetos Javascript. Nada más.

Los objetos Javascript son referencias a espacios de memoria donde hay datos y funciones (métodos) que se pueden ejecutar en el contexto de esos datos.

Borja
325 6 27 17