【问题标题】:Reading from a multi-level JSON using getJSON into Google Chart使用 getJSON 从多级 JSON 读取到 Google Chart
【发布时间】:2014-08-06 20:40:46
【问题描述】:

更快的概要(下面更详细):这是jsfiddle。中间被注释掉的部分是需要工作的。我无法将 json 数据添加到表中。任何提示表示赞赏。谢谢。

我正在尝试将一些基本数据添加到 Google 图表中的表格中。我发现从 JSON 的一个级别读取它很容易,但是一旦您进入多个级别,我就无法弄清楚如何使它工作。基本上,我想在表中为每个日期/名称/用户分组添加一行。这是我到目前为止所拥有的(中间的 $.getJSON 部分是重要的部分):

   <script type='text/javascript'>
      google.load('visualization', '1', { packages: ['table'] });
      google.setOnLoadCallback(drawTable);
      function drawTable() {
          var array = [['Date', 'Country', 'Users']];
          var sample = [new Date(2014, 6, 5), 'USA', 12];
          array.push(sample);



          $.getJSON('/JSON/Index', { get_param: 'value' }, function (data) {
              $.each(data.UsersByDateList, function (key, value) {
                  $.each(value.UsersByDate, function (key2, value2) {
                      var item = [new value2.Date, value.Name, value2.Users];
                      array.push(item);
                  });
              });
          });



          sample = [new Date(2014, 6, 19), 'USA', 12];
          array.push(sample);

          var data = google.visualization.arrayToDataTable(array);
          var table = new google.visualization.Table(document.getElementById('table_div'));
          table.draw(data, { showRowNumber: true });
      }
   </script>

JSON 看起来像这样:

{
   "NumRecords": "5123",
   "UsersByDateList": [
      {
         "Name": "Steve",
         "UsersByDate": [
            {
               "Date": "Date(2014,5,1)",
               "Users": 54
            },
            {
               "Date": "Date(2014,5,2)",
               "Users":103
            }
         ]
      },
      {
         "Name": "Jerry",
         "UsersByDate": [
            {
               "Date": "Date(2014,5,1)",
               "Users": 63
            },
            {
               "Date": "Date(2014,5,2)",
               "Users": 24
            }
         ]
       }
    ]
    }

问题可能与我使用的日期格式有关。我已经尝试摆脱“新”关键字以及以不同格式(例如 UTC)存储日期,但我读到当前格式“日期(YYYY,MM,DD)”是 Google Charts 接受的.

【问题讨论】:

    标签: javascript jquery json google-visualization getjson


    【解决方案1】:

    嗯,你有几个错误。首先,您的 json 中缺少 ] 。另外,更改这部分:

              $.each(data.UsersByDateList, function (key, value) {
                  $.each(value.UsersByDate, function (key2, value2) {
                      var item = [value2.Date, value.Name, value2.Users];
                      array.push(item);
                  });
              });
    

    仍然需要修正日期,但这应该可以消除图表绘制上的错误

    更新:您在评论中的部分工作,您只需要包含 jquery。尽管如此,您的日期格式仍然存在很大问题,因为只有在 dataTable 中以 json 格式设置图表时,您的日期格式才有效。此外,始终尽量避免使用 eval。你可以在这里查看我所做的修复:

    http://jsfiddle.net/juvian/xhp3g7u9/1/

    【讨论】:

    • 哎呀。我从一个更大的文件中复制了 JSON 的这一部分,但忘记包含最后一个 ]。此外,将 element.UsersByDate 更改为 value.UsersByDate (您所做的更改)只是一个副本和过去的错误。不幸的是,这些修复都没有将数据打印到表中。
    • 顺便说一下,图表绘制得很好,并按预期显示了 2 个示例元素。
    • @4815162342 那么有什么问题呢?日期?也许你可以用你的样本数据做一个 jsfiddle
    • 这是 jsfiddle:jsfiddle.net/4815162342/xhp3g7u9 中间被注释掉的部分是需要工作的部分。我无法将该数据添加到表中。任何提示表示赞赏。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2014-02-22
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    相关资源
    最近更新 更多