我正在尝试创建一些使用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示例?
答案 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)