django json序列化

主要是两个知识点,json.dumps函数,functools.partial
json.dumps的default参数:
源码中对于该函数的介绍如下
default(obj) is a function that should return a serializable version
of obj or raise TypeError. The default simply raises TypeError.

functools.partial:
用于创建一个偏函数,它用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待,这样可以简化函数调用.

简单实例:

from functools import partial

def add(x, y):
    return x + y

add_y = partial(add, 3)  # add_y 是一个新的函数
add_y(4)

根据上述两个知识点,我们来实现自己的json_dumps序列化函数。

import json

def json_serial_fallback(obj):
    """JSON serializer for objects not serializable by default json code"""
    if isinstance(obj, (datetime.datetime, datetime.date)):
        return str(obj)
    if isinstance(obj, bytes):
        return obj.decode("utf-8")
    raise TypeError ("%s is not JSON serializable" % obj)

json_dumps = partial(json.dumps, default=json_serial_fallback)

猜你喜欢

转载自www.cnblogs.com/zenan/p/10893640.html