資料庫資料轉換成JSON格式實例詳解

零下一度
發布: 2017-07-21 16:24:54
原創
3857 人瀏覽過

        最近又打算搞自動化維運平台,所以在看Django的知識。

        在實際專案開發中,遇到一個小問題:前後端發生資料互動主流採用的是JSON。前端傳資料到伺服器端比較簡單,稍微麻煩的是伺服器端傳JSON到前端。

        首先資料是從資料庫取得的,而Django預設使用的是ORM技術,但是身為一個維運人員,我其實比較反感這類抽像出來的API。因為儘管它對於開發人員來說,將資料庫的表抽像成了一個對象,便於開發,不需要寫SQL語句,但是這也是後期程序造成性能瓶頸的罪魁禍首(再做一次故障處理時,遇到一條70幾行的SQL語句。

不管怎麼說,這次的主題是將從資料庫取得資料轉換成JSON,下面會用ORM和SQL兩種方式都拿出來分享。

1.採用Django Model層,ORM技術 轉換成JSON格式

1 def getdata(request):2    # 使用ORM3    # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型4    data = models.VM.objects.values('id', 'ip', 'host', 'username')5    data = serializers.serialize("json", tomcats)6    return JsonResponse(list(data), safe=False)
登入後複製

2.完全棄用Django Model層,純SQL  轉換成JSON格式

1 def getdata(request):2 # 使用SQL3     with connection.cursor() as cursor:4         cursor.execute('select id, machine, tomcathome, ipaddress, description from tomcatData')5         data = dictfetchall(cursor)6     return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})
登入後複製

JsonResponse 物件:

class <span class="highlighted">JsonResponse</span>(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,** kwargs)

這個類別是HttpRespon的子類,它主要和父類別的區別在於:

1.它的預設Content-Type 被設定為: application/json

2.第一個參數,data應該是一個字典類型,當safe 這個參數被設定為:False ,那data可以填入任何能被轉換為JSON格式的對象,例如list, tuple, set。 預設的safe 參數是 True. 如果你傳入的data資料型別不是字典型,那麼它就會拋出 TypeError的例外。

3.json_dumps_params參數是一個字典,它將呼叫json.dumps()方法並將字典中的參數傳入給該方法。

透過以上的解釋,上面兩個方法的JsonResponse()裡面傳入的參數就很清晰明了。

這樣資料就會以JSON格式傳入到前端,前端就能用AJAX獲取到,並進行處理或展示了。

以上是資料庫資料轉換成JSON格式實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!