Найти значение в Json по JavaScript - PullRequest
6 голосов
/ 10 ноября 2009

Я не могу найти способ получить это значение («комментарий») в json, используя 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"
        }
    }]
};

Я пытаюсь привести пример, подобный этому:

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

Какое-нибудь тело может помочь мне?

JSON из приложения Ruby On rails, используя render :json => @atividades.to_json

Так много! Marqueti

Ответы [ 2 ]

13 голосов
/ 10 ноября 2009

Ваш JSON отформатирован таким образом, что его очень трудно читать, но мне кажется, что вы ищете:

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

Это потому, что в объекте, заданном ...topicos[0], нет ключа data, а есть только ключ comment. Если вам нужны дальнейшие ключи, просто продолжайте как: obj.topicos[0].comment.commentable_type.

Обновление

Чтобы узнать , какие ключи есть в topicos[0], вы можете воспользоваться парой подходов:

  1. используйте переключатель или, если хотите:

    var topic = myJSONObject.topicos[0];
    if( topic.hasOwnProperty( 'comment' ) ) {
      // do something with topic.comment
    }
    
  2. У вас могут возникнуть проблемы с кросс-браузерной совместимостью, поэтому использование библиотеки типа jQuery было бы полезно, но в целом вы можете сопоставить свойства следующим образом:

    for( var key in myJSONObject.topicos[0] ) {
      // do something with each `key` here
    }
    
1 голос
/ 10 ноября 2009

Это должно работать:

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

Если вы хотите, вы можете выполнить цикл следующим образом:

for (var key in myJSONObject.topicos[0])
{
   alert(key);
   if (key == 'comment')
    alert(myJSONObject.topicos[0][key]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...