我有一堂课叫做照相。此类有4个字段,而while之一称为file。该文件是Django的图片字段类型。

我有一个由这些图像字段组成的列表。我想将此python列表转换为json字符串。如果我在列表中调用json.dumps(listData),则会收到以下错误消息:

ImageFieldFile: photos/KObtu.jpg.


这似乎很明智。系统将图像字段表示为无效的json字符串。如何覆盖此输出字符串?另外,还有更好的方法吗?

最佳答案

您可以创建一个自定义JSON Encoder类,该类知道如何对ImageFieldFile进行编码:

import json
from django.db.models.fields.files import ImageFieldFile

class EnhancedJSONEncoder(json.JSONEncoder):
    """
    JSONEncoder subclass that knows how to encode Django "ImageFieldFile"s.
    """

    def default(self, o):
        if isinstance(o, ImageFieldFile):
            # Treat ImageFieldFile as a unicode string
            return super(EnhancedJSONEncoder, self).default(unicode(o))
        else:

            return super(EnhancedJSONEncoder, self).default(o)


然后,您将调用json.dumps()为:

json.dumps(listData, cls=EnhancedJSONEncoder))


假设您希望将ImageFieldFile表示为字符串

10-01 17:02