4

我觉得我的问题有一个相当简单的解决方案。

我正在做一些数据操作,最终以highcharts的格式打印出来。目前,我将整套嵌套字典分开并打印出每个部分,但我希望有类似 JSON.dumps(dict) 的输出格式,所有键均未引用。所以,在代码中:

{
    'chart': {'backgroundColor': 'Blue',
              'borderColor': 'Black',
              'renderTo': 'container'},
    'xAxis': { ... },
...
}

输出到

{
    chart: {
        backgroundColor: 'Blue',
        borderColor: 'Black',
        renderTo: 'container'},
    xAxis: { ... },
...
}

如果我不能像这样输出,有没有一种从 python 与 HighCharts 交互的好方法?尽管有一些合理的 Google-Fu,但我还没有真正遇到过。

编辑:我正在努力使其与Geckoboard - Highcharts 插件兼容,其中我无法访问 javascript 解析输出的全部功能。当我发送数据时,我需要将其格式化并准备好滚动。

4

2 回答 2

4

只需提供有效的 json 文本。您问题中的示例不是有效的 json。使用推送 API

#!/usr/bin/env python
import json
import urllib2

try:
    r = urllib2.urlopen("https://push.geckoboard.com/v1/send/" + widget_key,
                        json.dumps(nested_dict))
except IOError as e:
    if hasattr(e, 'reason'):
       print "connection error:", e.reason
    elif hasattr(e, 'code'):
       print "http error:", e.code
       print e.read()
    else:
       print "error:", e
else: # success
    assert json.load(r)["success"]
于 2012-09-23T03:15:11.927 回答
1

是的。您必须在客户端解码字符串(使用 javascript):

JSON.parse('{"background": "black"}')

此方法将返回您可以传递给 Highcharts 的 javascript 对象。

因此,您需要将 python 输出保存为 js 字符串,然后将其转换为 JS-object。

于 2012-09-23T01:03:29.317 回答