Django對象序列化成json

有些時(shí)候我們需要將Django從數(shù)據(jù)庫獲取的數(shù)據(jù)以json的格式傳輸?shù)角岸耍热鏴charts圖表用到的就是json格式的數(shù)據(jù)腰懂。關(guān)于Django對象序列化成json逞带,筆者踩了一些坑,最終總結(jié)了直觀簡潔地兩種方法愧捕。



一肃续、使用Django自帶的serializers序列化
Django ORM的 Queryset對象默認(rèn)無法被直接json.dumps()序列化黍檩,django.core提供的serializers模塊可以將其序列化成str類型。
例如始锚,在views.py里的代碼如下:

def tabledata(request):
    mon = MonRota.objects.all().filter(s_time__startswith='2018-02-10')
    json_data = serializers.serialize('json', mon)
    json_data = json.loads(json_data)
    return JsonResponse(json_data, safe=False)

接收到的json數(shù)據(jù):

[{
    "model": "ops.monrota",
    "pk": "1000001",
    "fields":
    {
        "s_time": "2018-02-10T09:00:00Z",
        "e_time": "2018-02-10T20:29:59Z",
        "name": "Mayun",
    }
},
{
    "model": "ops.monrota",
    "pk": "1000002",
    "fields":
    {
        "s_time": "2018-02-10T20:30:00Z",
        "e_time": "2018-02-11T09:59:59Z",
        "name": "MaHuateng",
    }
}]

可以看到比較詳細(xì)的信息刽酱,例如model名、主鍵數(shù)據(jù)瞧捌。
二棵里、使用json模塊中的json.dumps()函數(shù)序列化
或許方法一中的json格式并不是你想要的,我們大多數(shù)情況需要的都是類似于[{},{}]的二維格式姐呐,這時(shí)候我們可以用json.dumps()函數(shù)來處理殿怜。

def tabledata(request):
    mon = MonRota.objects.all().filter(s_time__startswith='2018-02-10').values()
    json_data = list(mon)
    json_data = json.dumps(json_data, cls=DateEncoder, ensure_ascii=False)
    return HttpResponse(json_data)

這里我們做了兩個(gè)指定,cls=DateEncoderensure_ascii=False曙砂,有兩個(gè)方面的考慮头谜。
一個(gè)是解決datetime、date格式數(shù)據(jù)無法json序列化問題鸠澈,新定義了一個(gè)類DateEncoder()去處理柱告。

class DateEncoder(json.JSONEncoder):  
    def default(self, obj):  
        if isinstance(obj, datetime.datetime):  
            return obj.strftime('%Y-%m-%d %H:%M:%S')  
        elif isinstance(obj, datetime.date):  
            return obj.strftime("%Y-%m-%d")  
        else:  
            return json.JSONEncoder.default(self, obj)

另外,json.dumps() 序列化時(shí)對中文默認(rèn)使用的ascii編碼笑陈,想輸出真正的中文需要指定ensure_ascii=False际度。
接收到的json數(shù)據(jù):

[{
    "id": "1000001",
    "s_time": "2018-02-10T09:00:00Z",
    "e_time": "2018-02-10T20:29:59Z",
    "name": "Mayun",
},
{
    "id": "1000002",
    "s_time": "2018-02-10T20:30:00Z",
    "e_time": "2018-02-11T09:59:59Z",
    "name": "MaHuateng",
}]

當(dāng)然,網(wǎng)絡(luò)上還有序列化成json的其他方法涵妥,大家也可以參考乖菱,但是個(gè)人推薦以上兩種,信我少踩坑妹笆。

如果你喜歡本文章块请,還請點(diǎn)個(gè)關(guān)注和喜歡,我會(huì)為大家不斷地帶來Python學(xué)習(xí)筆記拳缠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贸弥,隨后出現(xiàn)的幾起案子窟坐,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哲鸳,死亡現(xiàn)場離奇詭異臣疑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)徙菠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門讯沈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婿奔,你說我怎么就攤上這事缺狠。” “怎么了萍摊?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵挤茄,是天一觀的道長。 經(jīng)常有香客問我冰木,道長穷劈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任踊沸,我火速辦了婚禮歇终,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逼龟。我一直安慰自己评凝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布审轮。 她就那樣靜靜地躺著肥哎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疾渣。 梳的紋絲不亂的頭發(fā)上篡诽,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音榴捡,去河邊找鬼杈女。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吊圾,可吹牛的內(nèi)容都是我干的达椰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼项乒,長吁一口氣:“原來是場噩夢啊……” “哼啰劲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檀何,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤蝇裤,失蹤者是張志新(化名)和其女友劉穎廷支,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栓辜,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恋拍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藕甩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片施敢。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狭莱,靈堂內(nèi)的尸體忽然破棺而出僵娃,到底是詐尸還是另有隱情,我是刑警寧澤贩毕,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布悯许,位于F島的核電站,受9級(jí)特大地震影響辉阶,放射性物質(zhì)發(fā)生泄漏先壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一谆甜、第九天 我趴在偏房一處隱蔽的房頂上張望垃僚。 院中可真熱鬧,春花似錦规辱、人聲如沸谆棺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽改淑。三九已至,卻和暖如春浴讯,著一層夾襖步出監(jiān)牢的瞬間朵夏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工榆纽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仰猖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓奈籽,卻偏偏與公主長得像饥侵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子衣屏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 版權(quán): https://github.com/haiiiiiyun/awesome-django-cn Aweso...
    若與閱讀 23,080評(píng)論 3 241
  • 最近兩天一直在做如何從model中獲取數(shù)據(jù)庫中的數(shù)據(jù)躏升,然后把數(shù)據(jù)變成json數(shù)據(jù)傳給前臺(tái)。 from roomho...
    秦琴er閱讀 2,856評(píng)論 0 1
  • title: python語法練習(xí) 參考阮一峰等多個(gè)文件用來練習(xí)python基本語法 [TOC] import文件...
    采香行處蹙連錢閱讀 2,374評(píng)論 0 2
  • 大俠睡了...繼續(xù)碼字 呼, 我很糾結(jié),是守著他還是睡覺,大俠粑粑跑到客廳去看球了...他爹也是不容易啊, 賺錢養(yǎng)...
    DasBeste閱讀 363評(píng)論 0 0
  • 我愛我的家人狼忱,只是對他們關(guān)注得不夠煮甥,習(xí)慣地接受他們對我的關(guān)注盗温,只顧享受那份被愛藕赞。我一直想改變一下的成肘。 父親有兩部手...
    在裝翅膀的豬閱讀 155評(píng)論 0 1