django 使用json.dumps轉換queryset的datatime報錯問題解決


最近在使用django做項目的時候想使用ajax來實現前后台數據的交互,但是在將數據庫查詢結果轉換成json數據時,遇到時間格式的數據轉換遇到問題,無法正確的進行轉換,具體如下:

轉換成json時使用的方法如下:

json.dumps(MyModel.objects.values())

報錯信息如下:

Exception Value: [{'date': datetime.date(2012, 5, 26), 'time': datetime.time(0, 42, 27)}] is not JSON serializable



最后經過google(渣度無解,找到一些方案,但都不太好,而且都是轉載來轉載去的......)找到的解決方案如下:

from django.core import serializers

from django.core.serializers.json import DjangoJSONEncoder

import json

temp_output = serializers.serialize('python', MyModel.objects.all())

output = json.dumps(temp_output, cls=DjangoJSONEncoder)

ok,搞定。現在萬事大吉。。。。but,中文字符轉換后亂碼?????別着急,只需要在執行json.dumps方法的時候將ensure_ascii設定為False即可,即將下面這行代碼進行修改:

temp_output = serializers.serialize('python', MyModel.objects.all())

修改后如下:

temp_output = serializers.serialize('python', MyModel.objects.all(), ensure_ascii=False)

注意如果在查詢的時候使用了values,則直接使用:

json.dumps(list(tmp_output), ensure_ascii=False, cls=DjangoJSONEncoder)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM