2009-11-09 3 views
6

Non riesco a trovare un modo per ottenere questo valore ("commento") in json utilizzando javascript.Trova valore in JSON da 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" 
     } 
    }] 
}; 

sto cercando un esempio come questo:

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

Alcuni corpo mi può aiutare?

Il JSON è da Ruby on Rails applicazione, utilizzando render :json => @atividades.to_json

Tks un sacco! Marqueti

risposta

13

tuo JSON è formattato in modo tale che è molto difficile da leggere, ma sembra a me come siete alla ricerca di:

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

Questo perché non v'è alcuna data digitare l'oggetto dato da ...topicos[0], ma piuttosto solo il tasto comment. Se vuoi passare oltre le chiavi, continua come: obj.topicos[0].comment.commentable_type.

Aggiornamento

Per scoprire cosa chiavi sono in topicos[0] si può prendere un paio avvicina:

  1. utilizzare un interruttore o se come:

    var topic = myJSONObject.topicos[0]; 
    if(topic.hasOwnProperty('comment')) { 
        // do something with topic.comment 
    } 
    
  2. Potresti avere problemi con la compatibilità cross-browser qui, quindi usare una libreria come jQuery sarebbe utile, ma in generale è possibile mappare sulle proprietà in questo modo:

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

per fare un passo più in là, si potrebbe fare qualcosa di simile: un lert (myJSONObject.topicos [0] .comment.commentable_type); – Mercurybullet

+0

Batti a questo @ Daniel! :) – rfunduk

+0

Tks per le risposte. Ho bisogno di ottenere la chiave "commento" stringa. Perché posso ricevere anche un altro tipo. Qualcosa del genere: myJSONObject.topicos [0] .people ouJOJSONObject.topicos [0] .support E quindi eseguirò un po 'se formattare l'output corretto. tks! – mmarqueti

1

questo dovrebbe funzionare:

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

Se si vuole è possibile scorrere come questo :

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