1

我有一门课叫照片。此类有 4 个字段,其中一个称为文件。该文件是 Django 的图像字段类型。

我有一个由这些图像字段组成的列表。我想将此 python 列表转换为 json 字符串。如果我打电话json.dumps(listData)给我的名单,那么我会收到这个错误:

ImageFieldFile: photos/KObtu.jpg.

这似乎是明智的。系统将图像字段表示为不是有效 json 的字符串。如何覆盖此输出字符串?或者,有没有更好的方法来做到这一点?

4

1 回答 1

2

您可以创建一个知道如何编码 ImageFieldFile 的自定义 JSON 编码器类:

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 表示为字符串

于 2012-09-11T02:52:52.707 回答