Dict类型在json.dumps中抛出错误

时间:2015-04-11 02:11:00

标签: python json dictionary typeerror

我正在将字典传递给json.dumps,但它仍然会抛出错误:

TypeError: Undefined is not json serializable

我甚至在调用函数之前检查类型以确保它是字典类型。我正在使用Flask微框架并尝试将包含非常简单的json的Response对象返回到ajax请求:

$(document).ready(function() {

$.getJSON($SCRIPT_ROOT + '/getDictionary', function(data) {

    console.log(data);

});

});

@app.route('/getDictionary')

def getDictionary():

    empty_dic = {'empty' : 'dict'}

    if type(empty_dic) is dict:
        return Response(json.dumps(empty_dic), mimetype = "application/json")

4 个答案:

答案 0 :(得分:1)

您的大小写已关闭,请注意您定义emptydic但尝试序列化emptyDic。试试这个:

empty_dict = {'simple' : 'dict'}

if type(empty_dict) is dict:
    return Response(json.dumps(empty_dict).encoded('utf8'), mimetype = "application/json")

请注意,对于变量使用驼峰大小写也是针对PEP8的。建议使用蛇盒

答案 1 :(得分:1)

这是一个有效的例子:

import json

emptydic = {'simple' : 'dict'}

if isinstance(emptydic, dict):    # Note capitalization
    print(json.dumps(emptydic))   # {"simple": "dict"}

类型检查条件略有变化,我删除了Response / mimetype内容,因为它似乎与您的问题正交。

答案 2 :(得分:0)

您的词典名称为“emptydic”

在条件中,您使用“emptyDic”

尝试:

emptyDic = {"simple": "dict"}

if type(emptyDic) is dict:
    return Response(json.dumps(emptyDic).encoded('utf8'), mimetype = "application/json")

答案 3 :(得分:0)

你是否有机会尝试这个

json.dumps(emptydic, encoding='utf-8')

我在Python 2.7上尝试这个,字符串对象没有一个名为encoded的属性。