如何使用python创建highcharts格式化的json结构

时间:2014-10-06 23:07:32

标签: javascript python json django highcharts

我正在尝试创建一些使用python / django呈现高图图形的json。

这是我目前的观点:

class LineHighChart(object):
    title = {}

def weight_graph(request):
    print 'weight graph'
    highchart = LineHighChart()
    title = {
        'title': {
            'text': 'Weight Chart',
            'x': -20
        }
    }

    highchart.title = title
    print highchart

    return JsonResponse(highchart, safe=False)

打印:

<shared.linehighchart.LineHighChart object at 0x1038a6890>

然后我得到错误:

TypeError: <shared.linehighchart.LineHighChart object at 0x1038a6890> is not JSON serializable

从highcharts示例中,需要将其嵌入到如下的highcharts对象中:

highcharts({
        title: {
            text: 'Monthly Average Temperature',
            x: -20 //center
        },

如何让我的highcharts对象看起来像highcharts示例?

2 个答案:

答案 0 :(得分:4)

您正在尝试将类的序列化程序对象转换为json,但是python不知道如何正确执行此操作。有几种方法可以解决此问题:创建自己的对象编码器,将数据转换为字典等...( more)。

序列化后,您的数据将是:

'{"title": {"title": {"text": "Weight Chart", "x": -20}}}'

但这是不正确的格式,而且高级图表无法理解它。所以我建议简化你的逻辑:

def weight_graph(request):
    title = {
        'title': {
            'text': 'Weight Chart',
            'x': -20
        }
    }

    return JsonResponse(title, safe=False)

或者如果你真的需要使用课程:

class LineHighChart(object):
    title = {}


def weight_graph():
    highchart = LineHighChart()
    title = {
        'text': 'Weight Chart',
        'x': -20
    }
    highchart.title = title

    return JsonResponse(highchart.__dict__, safe=False)

序列化数据后将是:

'{"title": {"text": "Weight Chart", "x": -20}}'

Highcharts可以正常使用这些数据。

答案 1 :(得分:0)

如果你想在python中使用highcharts,你应该看看python-highcharts,这是一个python模块,它可以为你完成这个。

添加了足够的文档以帮助您入门。 (pip install,ipython notebook)