【问题标题】:Issue with jsonify while converting from Python 2.7 to 3.4从 Python 2.7 转换到 3.4 时出现 jsonify 问题
【发布时间】:2015-01-19 06:20:54
【问题描述】:

我在 Flask 中有一个简单的 api,可以在 Python 2.7 上运行良好。视图通过在 transform_data 字典上调用 jsonify 来返回 json 响应。

return jsonify(transform_data)

现在我正在迁移到 python 3.4,但出现以下错误。

raise TypeError(repr(o) + " is not JSON serializable")

TypeError: ItemsView(OrderedDict([('Car', 1217.62), ('Transfer', 551.86), 'Service Fees', 1313.6), ('MISC Costing', 82.09), ('Air', 35858.23), ('Hotel', 6179.34)])) is not JSON serializable

为什么会出现此错误?我需要进行哪些更改才能在 Python 3.4 上进行这项工作?

【问题讨论】:

  • ItemsView?听起来像 HttpResponse 的子类。 transform_data 是什么类型的?
  • 你能打印type(transform_data)吗? ItemsView 绝对是您的课程。如果没有您的代码,我们无法说明为什么在 python3.4 的情况下会通过。

标签: python python-3.x flask


【解决方案1】:

当您创建transform_data 时,您将一个值设置为字典的项目。然而,.items() 现在在字典上返回一个ItemsView 迭代器,而不是一个元组列表。查找您调用.items() 的位置并将结果转换为列表:list(my_dict.items())。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多