Foros del Web » Programando para Internet » Javascript »

confusion con array/ JSON

Estas en el tema de confusion con array/ JSON en el foro de Javascript en Foros del Web. Saludos. Soy nuevo en Javascript y estoy haciendo una insercion en una BD por medio de JSON, la insercion de la data la hago, pero ...
  #1 (permalink)  
Antiguo 19/05/2011, 11:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
confusion con array/ JSON

Saludos.

Soy nuevo en Javascript y estoy haciendo una insercion en una BD por medio de JSON, la insercion de la data la hago, pero no de la manera correcta, es decir, la estructura de los elementos no es la que debo de insertar...

Código:
var arraySel =  {id:{method:{}}}  //definicion del objeto methods, define la utilizacion del array para el objeto
       
      for(var i in selNodes){           
         if(typeof(selNodes[i])=='object'){
            // Presencia de nodo padre
            // console.log(selNodes[i])
            if (!selNodes[i].leaf){ //si es una hoja (sin childNodes)              
              arraySel.id[selNodes[i].id] = new Array();
            }else{
               // es un hijo (server side method)
               var newElement = {
                 "name": selNodes[i].id,
                 "allow": 1
               }
               
               arraySel.id[selNodes[i].parentNode.id].push(newElement)
             
            }  
         }
      }
         
      var jsonData = Ext.util.JSON.encode(arraySel);
necesito insertar un elemento antes del array (arraySel) que me permita definir la referencia a 'arraySel.id[selNodes[i].parentNode.id]' como id:arraySel.id[selNodes[i].parentNode.id]

podria alguien orientarme al respecto?

espero haberme explicado bien, gracias de antemano.
  #2 (permalink)  
Antiguo 19/05/2011, 12:51
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: confusion con array/ JSON

buenas,
no logro comprender muy bien lo que intentas. ¿podrias explicar la siguiente linea?
Cita:
necesito insertar un elemento antes del array (arraySel) que me permita definir la referencia a 'arraySel.id[selNodes[i].parentNode.id]' como id:arraySel.id[selNodes[i].parentNode.id]
no comprendo cuando dices insertar antes del array arraySel. por cierto, no es un array sino un objeto.

@edit,
si bien entiendo, lo que quieres hacer es definir una propiedad en json donde el valor sea el valor de otra propiedad dentro del mismo json. por ejemplo,
Código:
var json = {foo: "bar",
candy: json.foo
}
si es eso, no lo puedes hacer directamente dentro de json porque al momento en que se va creando, la referencia al objeto aun no existe. tendrias que hacerlo despues.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 19/05/2011 a las 13:09
  #3 (permalink)  
Antiguo 19/05/2011, 20:51
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: confusion con array/ JSON

Saludos, y gracias por tomarte el tiempo para orientarme...
oops, tienes razon, es un objeto, (var arraySel = {id:{method:{}}} ) jeje disculpa es que estoy un poco confundido.

creo estarte entendiendo, sin embargo intente haciendolo de esta manera:

var newElement = {
"name": selNodes[i].id,
"allow": 1
}

var oldElement ={
"name": arraySel.id[selNodes[i].parentNode.id],
"allow": 1
}
oldElement = new Array();

oldElement.name .push(newElement)

era a eso a lo que te referias? en este caso al insertarlo en la BD solo me muestra el contenido que esta dentro de newElement.

De nuevo gracias de antemano, y cualquier idea o aclaracion es bienvenida, estoy estancado con este asunto
  #4 (permalink)  
Antiguo 19/05/2011, 21:43
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: confusion con array/ JSON

la verdad, sigo sin entender la estructura de datos que quieres lograr. revisando ambos mensajes, me da a entender que tu quieres reflejar una estructura de arbol de nodos en un objeto de forma tal que una propiedad (id) indica el identificador de ese elemento. al mismo nivel, tienes un array que a su vez son objetos nodos. aparentemente, los elementos del array son nodos hijos de ese nodo. por decir ejemplo.
Código:
estructura jerarquica de nodos

- nodo #nodo01
  - nodo_hijo #nodo01_hijo01
  - nodo_hijo #nodo01_hijo02
    - nodo_hijo_nieto #nodo01_hijo02_nieto01
  - nodo_hijo #nodo01_hijo03
- nodo #nodo02
  - nodo_hijo #nodo02_hijo01
en json, esa estructura se puede representar de la siguiente forma.

Código:
nodes = {
// aqui puedes definir otras propiedades o metodos
// nodes simplemente es un contenedor de los nodos raices o ancestros ;
id: "container",
childs: [{
	id: "nodo01",
	childs: [{
		id: "nodo01_hijo01"
		}, {
		id: "nodo01_hijo02",
		childs: [{
			id: "nodo01_hijo02_nieto01"
			}]
		}, {
		id: "nodo01_hijo03"
		}]
	}, {
	id: "nodo02",
	childs: [{
		id: "nodo02_hijo01"
		}]
	}]
}
en este ejemplo se considera que todos los nodos son un objeto aunque este a su vez no tenga nodos hijos. cada objeto (nodo) contiene dos propiedades salvo los objetos vacios: id y childs. id es un string que puede ser un identificador del nodo y childs son los nodos hijos de dicho nodo. los nodos no necesariamente tienen que ser objetos, por ejemplo los nodos vacios podrian ser un simple string (id) dentro de la lista childs. por supuesto, este ejemplo esta hardcoded pero tu lo quieres hacer automatizado. ¿es esto lo que intentas hacer?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 20/05/2011, 07:10
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: confusion con array/ JSON

exacto, necesito asignar un identificador a cada nodo padre, de esta forma
"modules": [
{
"id": "qo-admin",
"allow": 1,
"methods": [
{ "name": "addGroup", "allow": 1 },
]
siendo en este caso el identificador de cada nodo padre 'ID' y asu vez se asigna una propiedad allow...

he intentado creando un objeto y llamando a la propiedad como te mencione anteriormente:

var otherElement ={
"name":arraySel.id[selNodes[i].parentNode.id],
"allow":1
}
otherElement.name.allow.push(newElement)

Pero no ha funcionado... espero no estar lejos de la solucion a este asunto, gracias!
  #6 (permalink)  
Antiguo 20/05/2011, 15:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: confusion con array/ JSON

buenas,
fijate en esta linea otherElement.name.allow.push(newElement), especificamente lo marcado en rojo. ahi tu estas diciendo que allow es un array debido al metodo push, pero no lo es. supongo, lo que realmente quieres es agregarlo al array methods. entonces deberia ser otherElement.name.methods.push(newElement).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: confusion, json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:39.