如何使用JavaScript来解析从Ruby on Rails控制器返回的多个JSON对象

时间:2012-10-26 04:35:01

标签: javascript ruby-on-rails json

  1. 在控制器上,我的代码如下:

    format.json {render :json=>{
      :entities => @entities,
      :entity_category_counters => @entity_category_counters
    }}
    
  2. 在浏览器方面,我的代码如下:

    $.getJSON('/entities.json',function(data){
    //data.entities
    //data[0].entities
    //data['entities']
    });
    

    无论我使用哪种方式访问​​返回JSON对象的数据,我都无法成功。

  3. 返回的JSON类似于:

    { “实体”:[{ “实体”:{ “created_at”: “2011-08-01T18:14:32Z”, “描述”: “XXX”}},{ “实体”:{ “created_at” : “2011-08-01T18:16:02Z”, “描述”: “XXX”}}], “entity_category_counters”:[{ “entity_category_counter”:{ “comment_category_id”:1, “计数器”:4 “ENTITY_ID” :1, “ID”:1, “important_tag”:假}},{ “entity_category_counter”:{ “comment_category_id”:2 “计数器”:0, “ENTITY_ID”:1, “ID”:2 “important_tag” :假}},{ “entity_category_counter”:{ “comment_category_id”:3 “计数器”:0, “ENTITY_ID”:1, “ID”:3 “important_tag”:假}},{ “entity_category_counter”:{” comment_category_id “:1,” 计数器 “:3”,ENTITY_ID “:2”,ID “:4”,important_tag “:假}},{” entity_category_counter “:{” comment_category_id “:2”,计数器 “:0,” ENTITY_ID “:2”,ID “:5”,important_tag “:假}},{” entity_category_counter “:{” comment_category_id “:3”,计数器 “:1,” ENTITY_ID “:2”,ID “:6,” important_tag“:假}}]}

  4. 如果我直接使用Alert显示数据,如下所示:

    $.getJSON('/entities.json',function(data){
    //data.entities
    //data[0].entities
    //data['entities']
    alert(data);
    
    });
    
  5. 消息框中的结果如下:

        [object Object],[object Object]
    

    那么有人能告诉我如何解析和访问包含两个对象的返回JSON对象中的数据吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

JSON代表JavaScript Object Notation,因此您现在正在使用纯JavaScript。你可以这样做:

data.entities[0].entity.created_at // 2011-08-01T18:14:32Z

我认为令人困惑的是,实体是一个数组,因此您必须访问该数组的索引才能获得其中的实体。然后你还有实体类别。

我认为你会发现一些有用的东西:

  • JSONLint(http://jsonlint.com/)粘贴在您的json代码中并对其进行格式化,以便您可以查看对象是可直接访问还是在数组中,在这种情况下您必须迭代它或访问特定索引
  • 您的浏览器控制台。在Google Chrome中,您可以右键单击页面,选择“检查元素”,然后单击“控制台”选项卡。从那里,您可以在您所在页面的上下文中执行javascript。我将你的json输出粘贴到控制台中以进行播放:test = {"entities...