Crear array asociativo y enviarlo por JSON

No sé a ustedes si les ha pasado, pero en PHP estamos algo acostumbrados a trabajar con arrays asociativos, los cuales los podemos transformar a nuestra conveniencia y utilizarlos de manera cómoda, pero lograr esto en otros lenguajes no lo es tanto.

En esta ocasión quería crear un array asociativo en JavaScript, porque se hace fácil agrupar muchas cosas de esta forma, y convertirlo en JSON, de forma que también en PHP se me convierta en un array asociativo.

En JavaScript podemos escribir algo como esto:

var myArray = new Array();

myArray[‘nombre’] = “Alguien”;

myArray[‘edad’] = 20;

alert(‘La edad de: ‘ + myArray[‘nombre’] + ‘es ‘ + myArray[‘edad’]);

pero si deseo convertir esto de forma directa a JSON, no obtendré nada:

JSON.stringify(myArray); // devuelve []

Por cierto puedes acceder a los arrays asociativos de la misma forma que las propiedades:

alert(myArray.nombre); // devolverá “Alguien”

alert(myArray.edad); // devolverá 20

Solución

var myArray = new Object(); // creamos un objeto

myArray[‘nombre’] = “Alguien”;

myArray[‘edad’] = 20;

var otroArray = jQuery.makeArray(myArray);

alert(JSON.stringify(otroArray));

// Es cierto que deberás añadir jQuery antes de escribir este código, pero podrás observar que ahora si obtienes un JSON

Algo más a observar, es que aunque es un Object, puedes utilizar sobre él las funciones pus(), pop(), o myArray[‘llave’].length como si fuese un array normal.

Anuncios

7 thoughts on “Crear array asociativo y enviarlo por JSON

  1. Hola y que pasa si quiero agregar mas que un solo valor ..
    ejemplo
    myArray[‘nombre’] = “Alguien”;
    myArray[‘edad’] = 20;

    myArray[‘nombre’] = “otro”;
    vmyArray[‘edad’] = 22;

    solo me muestra el ultimo en el alert()

    Gracias

    1. Hola, perdona la tardanza al escribir.
      La verdad es que se puede hacer eso, pero como array multidimensional, creo que ya lo has usado en lenguajes como C, C++, PHP, es lo mismo lo que harás. Ejemplo:

      myArray[1][‘nombre’] = “Alguien”;
      myArray[1][‘edad’] = 20;
      myArray[2][‘nombre’] = “Otro”;
      myArray[2][‘edad’] = 22;

      y luego para obtener un valor, haces esto:
      aler(myArray[2][‘edad’]); //esto devuelve 22

      Espero te sirva todavía.

    1. Hola! pues a la verdad yo creé este post porque tuve el problema de que quería crear un array asociativo y convertirlo en JSON, de forma que al tomarlo en PHP, este JSON se convirtiera en otro array asociativo y poder hacer comparaciones con los $key => $value del array, y en mi código esto es funcional (es un extracto):
      gaiSelected[grupo] = {};
      gaiSelected[grupo][humedad] = [ iId ];
      //……
      gaiSelected[grupo][humedad].push(iId);

      y funciona estupendo!! ten en cuenta que grupo y humedad son variables, las cuales en iteraciones cambian de valor, no son los key del array asociativo. Haz tus pruebas

    1. jeje tienes razón, realmente son atributos de un Objeto, el objeto puede ser creado simplemente con un var obj = {} y se le pueden añadir cuantos atributos se deseen

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s