1

写真というクラスがあります。このクラスには 4 つのフィールドがあり、そのうちの 1 つはファイルと呼ばれます。このファイルは、Django のイメージ フィールド タイプです。

これらの画像フィールドで構成されるリストがあります。このpythonリストをjson文字列に変換したい。リストを呼び出すjson.dumps(listData)と、次のエラーが発生します。

ImageFieldFile: photos/KObtu.jpg.

これは理にかなっているようです。システムは、有効な json ではない文字列として画像フィールドを表します。この出力文字列をオーバーライドするにはどうすればよいですか? あるいは、これを行うためのより良い方法はありますか?

4

1 に答える 1

2

ImageFieldFile をエンコードする方法を知っているカスタム JSON Encoder クラスを作成できます。

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 に答える