2012-09-11 28 views
1

我有一個類叫做照片。這個類有4個字段,其中一個叫做文件。該文件是Django的圖像字段類型。json.dumps在python上的用戶定義對象列表

我有一個由這些圖像字段組成的列表。我想將這個python列表轉換成json字符串。如果我把我的json.dumps(listData)名單上,然後我得到這個錯誤:

ImageFieldFile: photos/KObtu.jpg. 

這似乎是合理的。系統將圖像字段表示爲無效的json字符串。我怎樣才能覆蓋這個輸出字符串?或者,有沒有更好的方法來做到這一點?

回答

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被表示爲一個字符串

相關問題