Python 基礎(chǔ)之pickle與json
有沒有在搞pickle與json在進行數(shù)據(jù)儲存的時候老是報錯诞吱,這個有些讓人煩惱瓢谢,在之前有一篇介紹過它們的基本用法以及在使用過長中避免一些坑,但是今天在把對象寫入的時候pickle 與json卻給我而給出了不同的結(jié)果廊鸥。
我們先看一下我當(dāng)時做的結(jié)果:
:
這是為啥邦投?傳遞的參數(shù)是一致的為啥json和pickle會有如此大的差距呢?Student為啥就不是可序列化的對象呢酣栈?有些困惑险胰,其實json中有許多的參數(shù)是可以設(shè)置的。之前的Student對象不可以序列化成json矿筝,是應(yīng)為在默認(rèn)的情況下起便,dumps方法不知道如何把Student實例變換成一個json的{}對象。
在可選參數(shù)default就是把任意一個對象可序列化為json的對象窖维,這里就必須給Student專門寫一個轉(zhuǎn)化函數(shù)榆综,再把函數(shù)傳遞進去就可以解決這個問題了,我們來看一下如何做:
看起來還是把這個問題初步解決掉了铸史,哈哈鼻疮!這個問題是解決了,下次再來個老師Teacher類琳轿,是不是還得這樣搞一下呀判沟,這樣是不是就有點不合適了耿芹,那就得想個別的辦法,通常呢每一個calss 都有一個__dict__的方法挪哄,so ,這樣也是可以解決這個問題的吧秕,來做一下驗證:
解決的還可以,好了中燥,媽媽再也不擔(dān)心我以后不會用pickle和json存儲對象數(shù)據(jù)了?艿椤!疗涉!學(xué)好python你需要一個良好的環(huán)境拿霉,一個優(yōu)質(zhì)的開發(fā)交流群,群里都是那種相互幫助的人才是可以的咱扣,我有建立一個python學(xué)習(xí)交流群绽淘,在群里我們相互幫助,相互關(guān)心闹伪,相互分享內(nèi)容沪铭,這樣出問題幫助你的人就比較多,群號是301偏瓤,還有056杀怠,最后是051,這樣就可以找到大神聚合的群厅克,如果你只愿意別人幫助你赔退,不愿意分享或者幫助別人,那就請不要加了证舟,你把你會的告訴別人這是一種分享硕旗。