Python - 在序列化json响应时必须设置多个类型处理程序

时间:2016-10-19 11:00:22

标签: python json

我正在尝试将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 serializabledatetime('....') 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.dumpsdate_default

问题 decimal_default应使用什么语法来传递处理程序的日期和小数?

0 个答案:

没有答案