JsonResponse對象


1.JsonResponse

class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)

是HttpResponse的一個子類(有很多的子類),用於幫助創建JSON編碼的響應。他從父類繼承大部分行為,並具有以下的不同點:

  它的默認Content-Type頭部設置為application/json。

(1)它的第一個參數 data,應該為一個 dict 實例。如果 safe 參數設置為 False,它可以是任何可 JSON 序列化的對象。

(2)encoder,默認為 django.core.serializers.json.DjangoJSONEncoder,用於序列化data。

(3)布爾參數 safe 默認為 True。如果設置為 False,可以傳遞任何對象進行序列化(否則,只允許 dict 實例)。如果 safe 為 True,而第一個參數傳遞的不是 dict 對象,將拋出一個TypeError。

(4)json_dumps_params 是一個字典,它是在生成響應時,傳給 json.dumps() 的參數。

 

2.用法

from django.http import JsonResponse  
 response = JsonResponse({'foo': 'bar'})  
 response.content  
'{"foo": "bar"}'      //<span style="background-color: white; font-family: Helvetica, Tahoma, Arial, sans-serif;">序列化非字典對象</span>

 

若要序列化非 dict 對象,你必須設置 safe 參數為 False:

response = JsonResponse([1, 2, 3], safe=False)  
如果不傳遞safe=False,將拋出一個TypeError。 

 

3.修改默認的JSON 編碼器

 如果你需要使用不同的 JSON 編碼器類,你可以傳遞 encoder 參數給構造函數:

response = JsonResponse(data, encoder=MyJSONEncoder)  

 

JsonResponse(book_list,safe=False,json_dumps_params={"ensure_ascii":False})

可以解決編碼問題,得到想輸出的中文了

 


免責聲明!

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



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