获取错误datetime.date(2018,6,12)在Python中不是JSON可序列化的

时间:2018-06-11 07:53:12

标签: python json alexa flask-ask

我正在尝试使用Flask-Ask并创建一个Alexa技能。我在将日期和时间存入json时遇到问题

以下是错误

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.date(2018, 6, 12) is not JSON serializable

以下是代码段

@ask.intent("BookDateConfirmIntent")
def booking_confirmed(confirm_date):

    start_date = session['attributes']['startDate']
    data = {'services': '1234a', 'startDate': start_date, 'message': 'booking confirmed'}
    print json.dumps(data, indent=4, sort_keys=True, default=str)

传递日期如2018-06-12

我读到我们需要对此进行序列化,并且我无法使其正常工作以满足上述代码要求。有人请帮忙。感谢

2 个答案:

答案 0 :(得分:1)

您可以尝试将datetime object压缩为string

start_date更改为str(start_date)

答案 1 :(得分:1)

您是否正在考虑当前的约会时间或某些特定时间并不重要。重要的是type(start_date)datetime.date

您可以尝试这样的事情:

def myconverter(o):
    if isinstance(o, datetime.date):
        return "{}-{}-{}".format(o.year, o.month, o.day)

def booking_confirmed(confirm_date):

    start_date = myconverter(session['attributes']['startDate'])
    data = {'services': '1234a', 'startDate': start_date, 'message': 'booking confirmed'}
    print json.dumps(data, indent=4, sort_keys=True, default=str)