从数据库中提取数据并使其成为JSON可序列化

时间:2016-04-07 16:48:26

标签: python json django

我正在尝试从数据库中提取一些数据并使data['datetime'] JSON可序列化以将其从Django传递给Highcharts。我认为我的方法可行,但似乎没有。我现在得到的错误是Type not serializable,因为它没有从函数json_serial传递条件。我做错了什么,直到现在我还以为dict ['key']会传递这样的逻辑参数?

from .models import Heater
import json
from datetime import datetime

def json_serial(obj):
"""JSON serializer for objects not serializable by default json code"""

    if isinstance(obj, datetime):
        serial = obj.isoformat()
        return serial
    raise TypeError ("Type not serializable")

class ChartData(object):    
    def check_heater_data(self):
        data = {'datetime': [], 'temp_max': [],
                 'temp_min': []}

        valves = Heater.objects.all()

        for unit in valves:
            data['temp_max'].append(unit.temp_max)
            data['temp_min'].append(unit.temp_min)
            data['datetime'] = json_serial(data['datetime'].append(unit.datetime))

        jsonstring = json.dumps(data)
        jsondata = json.loads(jsonstring)

        return jsondata  

1 个答案:

答案 0 :(得分:0)

因为您正在将list对象传递给json_serial函数。

此处:json_serial(data['datetime'].append(unit.datetime)),显然不是datetime的实例。

尝试将其更改为:data['datetime'].append(json_serial(unit.datetime))