javascript - 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard 示例)

标签 javascript python google-app-engine google-bigquery

Python Hello 仪表板示例 我不能运行这个项目。这个项目有一些问题,在文件 index.html 中:我无法为 DataTable 获取变量数据类型 JSON (dict)。

geodata = {{ data }} // error
geodata="{{data}}" //it is String not type JSON     

累积导致错误行 google.visualization.DataTable(geodata) 请帮助我!

<script type='text/javascript'>
 google.load('visualization', '1', {'packages':
   ['geochart']});
 google.setOnLoadCallback(drawMarkersMap);

 geodata = {{ data }} // error

 function drawMarkersMap() {
   if (! geodata) return;
   var data = new google.visualization.DataTable(geodata);

   var options = {
     region: 'US',
     displayMode: 'region',
     resolution: 'provinces',
     width: '800'
   };

   var chart = new google.visualization.GeoChart(
     document.getElementById('chart_div'));
   chart.draw(data, options);
};
</script>

它在这个链接中:https://developers.google.com/bigquery/articles/dashboard#downloadinstalllibraries

最佳答案

您需要更彻底地阅读教程。

{{ data }} 是一个模板占位符,它本身不是 JSON(而且根本不是有效的)。在本教程的进一步内容中,在呈现模板时会填充占位符:

@decorator.oauth_required
def get(self):
    data = { 'data': self._bq2geo(bq.Query(QUERY, BILLING_PROJECT_ID)),
             'query': QUERY }
    template = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(render(template, data))

data字典中的data键提供了需要填写的值; self._bq2geo() 方法生成 JSON 值:

def _bq2geo(self, bqdata):
    """geodata output for region maps must be in the format region, value.
       Assume the BigQuery query output is in this format and get names from schema.
    """
    logging.info(bqdata)
    columnNameGeo = bqdata['schema']['fields'][0]['name']
    columnNameVal = bqdata['schema']['fields'][1]['name']
    logging.info("Column Names=%s, %s" % (columnNameGeo, columnNameVal))
    geodata = { 'cols': ({'id':columnNameGeo,'label':columnNameGeo,'type':'string'},
      {'id':columnNameVal, 'label':columnNameVal, 'type':'number'})}
    geodata['rows'] = [];
    logging.info(geodata)
    for row in bqdata['rows']:
        newrow = ({'c':[]})
        newrow['c'].append({'v': 'US-'+row['f'][0]['v']})
        newrow['c'].append({'v':row['f'][1]['v']})
        geodata['rows'].append(newrow)
    logging.info('FINAL GEODATA---')
    logging.info(geodata)
    return json.dumps(geodata)

该方法返回一个 JSON 值,它替换了 {{ data }} 占位符字符串。

关于javascript - 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard 示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890726/

相关文章:

javascript - 去掉 c3.js 上的中间线

javascript - 如何提取 <pre> 标签内的元素

python - 如何从 pandas 数据框列的元组中的一个位置获取所有值?

python - 如何设置环境变量 R_user 以在 python 中使用 rpy2

python - **(双星/星号)和 *(星号/星号)对参数有何作用?

android - 为什么我的谷歌开发者控制台无法访问 API 和授权?

javascript - 如何同时检查 JSON 中响应及其子节点是否存在?

javascript - PushState:如何添加查询字符串而不重定向

google-app-engine - 具有接口(interface)类型字段的结构

python - 使用谷歌应用引擎将文件插入谷歌驱动器。使用的python客户端api