jueves, 22 de marzo de 2012

No solo de Grails vive el hombre - JSON

En algún momento necesitaremos realizar llamadas con Ajax y que mejor que usar JSON para ello ya es un formato de datos muy ligero y utiliza la misma sintaxis que javascript. Además tiene la ventaja de que podemos incorporarlo dentro del código javascript sin necesidad de realizar análisis previos.

Sintaxis para los literales de matriz:

var dias = ["Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo"];

También es posible crear una matriz, utilizando el constructor Array (esto es solo valido para javascript pero no para JSON)

var dias = new Array("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo");

el acceso a los valores se realiza indicando el nombre y su posición, teniendo en cuenta que la primera posición de la matriz siempre empieza por 0

alert(dias[0]); //Muestra Lunes
alert(dias[6]); //Muestra Domingo

Los Array no tienen un tipo de datos definido, por tanto pueden contener cualquiera de los tipos posibles.

Literales de objeto

Su finalidad es poder crear un objeto mediante el literal. Su sintaxis:

var libro = {
            "Titulo": "JSON VS XML",
            "autor": "Marty MCFly",
            "paginas" : 260,
            "digital": true
};

Nota: el valor de la última propiedad no lleva coma

se puede acceder al valor de las propiedades de varias maneras: 
Nombrando el objeto y utilizando la notación de punto

alert(libro.autor);

o utilizando la notación de corchetes

alert(libro["autor"]);

Literales de objeto y matriz

var libro = [
        {
                "Titulo":"JSON VS XML",
                "autor": "Marty MCFly",
                "paginas" : 260,
                "digital": true
        },
        {
                "Titulo":"Lenguaje Groovy",
                "autor": "Pepe HHLL",
                "paginas" : 120,
                "digital": false
        },
        {
                "Titulo":"Grails. El Santo Grial de Java",
                "autor": "Jason DDFF",
                "paginas" : 210,
                "digital": true
        }
];

Nota: el valor de la última propiedad de cada objeto no lleva coma, así como la última llave 

Libros es un array que contiene tres objetos de tipo libro. Y el acceso a las propiedades se realiza de la siguiente manera
alert(libro[2].autor); // Escribe Jason DDFF

Literales de matriz dentro de un objeto

var libro = {
                        "Titulo":"Grails 2.0 Advanced",
                        "autor": [""Marty MCFly","Pepe HHLL","Jason DDFF"],
                        "paginas" : 260,
                        "digital": true
                };

para acceder a 2º autor tendríamos que hacer: 
alert(libro.autor[1]); //ya que la matriz empieza por 0

Para convertir este objeto a JSON lo único que hay que hacer es eliminar la variable ya que JSON solo es estructura de datos; el código anterior por lo tanto quedaria como sigue:

{
  "Titulo":"Grails 2.0 Advanced",
  "autor": [""Marty MCFly","Pepe HHLL","Jason DDFF"],
  "paginas" : 260,
  "digital": true
}

si transmitimos esta información y la almacenamos en una variable llamada cad lo único que tendremos es una cadena de texto que para convertirla a objeto necesitaremos la ayuda de la función eval()

var objLibro = eval("(" + cad + ")");

ahora ya tenemos un objeto y por tanto podremos acceder a sus propiedades

No hay comentarios:

Publicar un comentario