jSon

Visita este artí­culo en http://www.estadobeta.com/2006/05/11/json/

Por Ismael en Desarrollo, artículos, javascript, tips

jSon (Javascript Object Notation) se refiere a una forma alternativa y más sintética de escribir código javascript. Por ejemplo, la definición de un objeto y sus atributos en forma tradicional:


var obj = new Object();
obj.nombre = "Juan";
obj.getNombre = function(){
  return this.nombre;
}

…Puede reescribirse en jSon, de la siguiente forma:


var obj = {
  nombre: "Juan",
  getNombre: function(){
      return this.nombre;
    }
}


Esto, porque en Javascript los objetos no son más que un “hash”. Un “hash” es una colección de pares nombre/valor separados por coma (también conocido como array asociativo).


var Persona = {nombre:"Juan",apellido:"Gonzales",edad:23};
copia_nombre = Persona.nombre; // "Juan"
copia_edad = Persona.edad; // "23"

El valor de cada atributo puede ser un String, un numero o incluso una función, un array u otro objeto. En javascript puedes asignar una función a una variable. En realidad puedes asignar cualquier tipo de datos a una variable.


var personas = {
  nombres: ["Juan","Andres","Julia"], // un array
  getNombreAleatorio: function(){ // una función
    return this.nombres[Math.floor(Math.random()*this.nombres.length)];
}
}
var nombre = personas.getNombreAleatorio(); // Un nombre al azar de personas.nombres

La sintaxis de jSon puede ser muy conveniente para escribir código más compacto y portable. Pero jSon no es sólo útil para Javasript: al ser básicamente un formato estrucurado de datos (ya que los objetos javascript son básicamente colecciones estructuradas de datos), jSon está siendo usado cada vez más como transporte de datos entre aplicaciones, preferido algunas veces por sobre XML por su simpleza. Por ejemplo, para el XML:


<persona>
  <nombre>Juan</nombre>
  <apellido>Gonzales</apellido>
  <edad>23</edad>
</persona>

Podemos escribir el equivalente recién expuesto, en jSon:


var Persona = {nombre:"Juan",apellido:"Gonzales",edad:23}

Esto es especialmente ventajoso para las aplicaciones Ajax (que cargan datos externos). Si los datos están formateados en jSon, al ser inyectados a la aplicación javascript quedan inmediátamente disponibles como objetos javascript, evitándose el proceso de parseo -interpretación y conversión - de los datos XML.

15 comentarios para “jSon”

  1. GravataraNieto2K » Article » Mini Tutorial JSon Dice:

    […] jSon (Javascript Object Notation) se refiere a una forma alternativa y más sintética de escribir código javascript […]

  2. GravatarEstadoBeta » Archivo » Javascript OOP Dice:

    […] A diferencia de crear objetos directamente, la creación de un prototipo nos permite diseñar una “plantilla” para estructurar el comportamiento de multiples instancias - una clase -. Al prototipo de Persona podemos agregar nuevas operaciones que estarán disponibles en todas las instancias de la Clase. […]

  3. GravatarEstadoBeta » Archivo » Javascript: clases con argumentos opcionales Dice:

    […] El primer argumento es la id de un elemento. El segundo es un objeto javascript, escrito en notación literal o jSon. […]

  4. GravatarEstadoBeta » Archivo » Prototype Dice:

    […] Lo que sigue es una descripción de los principales aportes de Prototype. Para entenderla debes estar familiarizado con Javascript y los conceptos de función / método, variable y nociones básicas de Orientación a Objetos. También recomiendo que leas este y este artículo de EstadoBeta, si no lo has hecho ya. […]

  5. GravatarMarc Dice:

    Pues yo hubiera jurado que eso que comentas lo llamaban namespaces. Umm… ya se:

    http://earthcode.com/blog/2006/02/javascript_namespaces.html

    Coincido contigo con lo que JSON es algo así como un XML pero con menos metadata.

    Saludos!!
    Marc

  6. GravatarIsmael Dice:

    Marc: las dos cosas. jSon es la sintaxis particular que muestro en este artículo. Los “namespaces” o Espacios de Nombre son un concepto usado en muchos lenguajes y consiste en definir “contenedores” de código con nombres únicos, de manera de evitar la coincidencia de nombres de variables o métodos. Los namespaces son parte integral de la estructura de clases de Java, por ejemplo. En Javascript no son parte del lenguaje pero se pueden “emular” usando objetos simples que contienen funciones u otros objetos.

  7. Gravatarleo kirotawa Dice:

    muy bueno este post , usted sabe donde yo puedo encuentrar uno tutorial de el json?
    gracias

  8. GravatarRecursos útiles para trabajar con JSON — Viciao2k3 Dice:

    […] Entender que es JSON (tuto, ejemplos…) […]

  9. GravatarStudio Creative Weblog Dice:

    […] También puedes consultar el siguiente manual y este mini tutorial. […]

  10. GravatarEstadoBeta » Archivo » Ext 2.0 Dice:

    […] Ventanas, mensajes emergentes, grillas, date pickers y un sin numero de utilidades son todas creadas en tiempo de ejecución. Alguien preguntará ¿y los datos?. Los datos son obtenidos con mucho AJAX a través de XML y/o JSON. […]

  11. Gravataralan Dice:

    haber….investigando con este tema…de JSON me tope con la bella microsoft y sus “paginas” y no creo que nada mal…

    haber…un ejemplo de esa web hace lo siguiente .:

    var continents = new Array();
    continents.push(”Europe”);
    continents.push(”Asia”);
    continents.push(”Australia”);
    continents.push(”Antarctica”);
    continents.push(”North America”);
    continents.push(”South America”);
    continents.push(”Africa”);

    alert(”The JSON representation of the continents array is: ” +
    continents.toJSONString());

    haber toncs…pq no funciona ???…tiene q ver con el “eval()” ???…si fueran tan amables en decirme..q es lo q pasa….o tan bruto soy ??…:-s

  12. Gravataralan Dice:

    ops….
    esta web es la q hago referencia…si alguien le interesa…XD

    http://www.microsoft.com/spanish/msdn/articulos/archivo/180607/voices/bb299886.mspx

  13. GravatarIsmael Dice:

    @Alan: Que “eval()”?

    toJSONString no es una funcion nativa de Javascript. Tienes que implementarla tu mismo.

  14. Gravatarvladimir prieto Dice:

    toJSONString que hace referencia el link, dícise que fue sacado de aquí. cabe hacer notar que en el sitio oficial de json.org, no encontré por ningún lado un enlace a ese script que se menciona en M$. como llegaron ellos ahí? ni idea.

    ahora bien, lo bajé y ahí si funciona el ejemplo que pregunta @alan.

    como bien dice Ismael, toJSONString no es nativo de Javascript, y con script como los mencionados puedes llegar a ello. Librerías como “mootools también lo implementan.

    saludos!

  15. Gravatarvladimir prieto Dice:

    ups, el link de mootools quedó mal…aqui va denuevo:

    http://www.mootools.net

Deja un comentario

XHTML: puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>