我正在将字典传递给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")
答案 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的属性。