2009-11-09 7 views
6

no puedo encontrar una manera de obtener este valor ("comentario") en JSON usando javascript.valor hallazgo en JSON mediante javascript

var myJSONObject = { 
    "topicos": [{ 
     "comment": { 
      "commentable_type": "Topico", 
      "updated_at": "2009-06-21T18:30:31Z", 
      "body": "Claro, Fernando! Eu acho isso um extremo desrespeito. Com os celulares de hoje que at\u00e9 filmam, poder\u00edamos achar um jeito de ter postos de den\u00fancia que receberiam esses v\u00eddeos e recolheriam os motoristas paressadinhos para um treinamento. O que voc\u00ea acha?", 
      "lft": 1, 
      "id": 187, 
      "commentable_id": 94, 
      "user_id": 9, 
      "tipo": "ideia", 
      "rgt": 2, 
      "parent_id": null, 
      "created_at": "2009-06-21T18:30:31Z" 
     } 
    }] 
}; 

estoy tratando un ejemplo como este:

alert(myJSONObject.topicos[0].data[0]); 

Algunos cuerpo me puede ayudar?

El JSON es de Ruby on Rails aplicación, utilizando render :json => @atividades.to_json

Tks mucho! Marqueti

Respuesta

13

Su JSON se formatea de tal manera que es muy difícil de leer, pero que me parece que está buscando:

alert(myJSONObject.topicos[0].comment); 

Esto es porque no hay data clave en el objeto dado por ...topicos[0], sino simplemente la tecla comment. Si desea más claves pasadas, simplemente continúe como: obj.topicos[0].comment.commentable_type.

actualización

Para averiguar lo llaves están en topicos[0] se puede tomar un par se acerca:

  1. usar un interruptor o si como:

    var topic = myJSONObject.topicos[0]; 
    if(topic.hasOwnProperty('comment')) { 
        // do something with topic.comment 
    } 
    
  2. Es posible que tenga problemas con la compatibilidad de navegador cruzado aquí, por lo que una biblioteca como jQuery sería de gran ayuda, pero en general se puede asignar más de las propiedades de esta manera:

    for(var key in myJSONObject.topicos[0]) { 
        // do something with each `key` here 
    } 
    
+0

a dar un paso más lejos, usted podría hacer algo como: una lert (myJSONObject.topicos [0] .comment.commentable_type); – Mercurybullet

+0

¡Te lo gané @Daniel! :) – rfunduk

+0

Tks para las respuestas. Necesito obtener la cadena clave de "comentario". Porque puedo recibir otro tipo también. Algo como esto: myJSONObject.topicos [0] La gente ou myJSONObject.topicos [0] .support Y entonces me van a hacer alguna Si para dar formato a la salida correcta. tks! – mmarqueti

1

esto debería funcionar:

alert(myJSONObject.topicos[0].comment); 

si se desea se puede recorrer como esto :

for (var key in myJSONObject.topicos[0]) 
{ 
    alert(key); 
    if (key == 'comment') 
    alert(myJSONObject.topicos[0][key]); 
}