我正在尝试将JSON从Django视图返回给客户端,并且具有以下代码:
...
return JsonResponse({'some_qs':json.dumps(list(some_qs), ensure_ascii=False, default=date_default).encode('utf8'),
'sum':json.dumps(sum, ensure_ascii=False).encode('utf8')})
问题是some_qs
包含日期和小数。除非我在default
中指定json.dumps
函数,否则我最终会使用Decimal('400.0000') is not JSON serializable
或datetime('....') is not JSON serializable
。我已经学会了如何处理这种情况,当你只有日期或只有小数。在这种情况下,我使用如下函数:
def date_default(obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
else:
raise TypeError
def decimal_default(obj):
if isinstance(obj, decimal.Decimal):
return float(obj)
raise TypeError
并且调用将default
的{{1}}参数分别设置为json.dumps
或date_default
。
问题
decimal_default
应使用什么语法来传递处理程序的日期和小数?