我试图返回返回的字典列表作为get请求的一部分。我正在调用下面的函数。
def get_data(id):
selected_data = Database.get_date(id)
json.dumps(selected_data, default=str)
return jsonify({'data': selected_data})
selected_data就像
[{'date': datetime.date(2019, 1, 15), 'id': 1, 'name': 'John '}, {'date': datetime.date(2019, 1, 11), 'id': 2, 'name': 'Jane'}]
但是,我收到下面的错误
TypeError(repr(o)+“不可JSON序列化”) TypeError:datetime.date(2019,1,15)不可JSON序列化
我已经尝试过使用this stack overflow线程建议的json.dumps,但仍然遇到相同的错误。
感谢您的帮助。
答案 0 :(得分:1)
尝试以下任一方法
selected_data["date"] = selected_data["date"].isoformat()
selected_data["date"] = selected_data["date"].strftime("%Y-%m-%d %H:%M:%S:%f")
selected_data["date"] = str(selected_data["date"])
答案 1 :(得分:0)
您应该实现一个客户JSONEncoder
import json
from datetime import date
from datetime import datetime
class JsonExtendEncoder(json.JSONEncoder):
"""
This class provide an extension to json serialization for datetime/date.
"""
def default(self, o):
"""
provide a interface for datetime/date
"""
if isinstance(o, datetime):
return o.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(o, date):
return o.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, o)
if __name__ == '__main__':
d = {'now': datetime.now(), 'today': date.today(), 'i': 100}
ds = json.dumps(d, cls=JsonExtendEncoder)
print "ds type:", type(ds), "ds:", ds
l = json.loads(ds)
答案 2 :(得分:0)
这是我的方法。对于flask 和flask-restful 用户
class ReversingIntegerNumber {
public int reverse(int originalNum) {
boolean originalIsNegative = originalNum > 0 ? false : true;
int reverseNum = 0;
int modValue;
originalNum = Math.abs(originalNum);
while(originalNum != 0) {
modValue = originalNum % 10;
if(reverseNum > (Integer.MAX_VALUE - modValue)/10) {
return 0;
}
reverseNum = (reverseNum * 10) + modValue;
originalNum /= 10;
}
return originalIsNegative ? -1 * reverseNum : reverseNum;
}
}