通过javascript在Json中找到价值

时间:2009-11-09 21:38:07

标签: javascript json parsing

我找不到一种方法可以使用javascript将此值(“注释”)添加到json中。

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 个答案:

答案 0 :(得分:13)

您的JSON格式化方式非常难以阅读,但它在我看来就像您在寻找:

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

这是因为data给出的对象中没有...topicos[0]个键,而只是键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 :(得分:1)

这应该有效:

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

如果你想要,你可以像这样循环:

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