importjson
from datetime import
datetime, date
#res =
#第一次序列化
#print(json.dumps(res)) # typeerror: object of type 'datetime' is not json serializable
#因為datetime.today()和date.today()是物件,不在json序列化的範圍內
#方法一:
#將字典中的值變成可序列化型別,可以手動轉成字串格式
#res1 = 'datetime.today()'
#res2 = 'date.today'
#res =
#第二次序列化
#print(json.dumps(res)) #
#因為json可以預設可以轉化的資料型別包含字串,所以在轉換之後就可以正常序列化了
#但是方法過於low bee
#所以 >>> 方法二:
'''分析步驟:
我們要序列化的內容中有datetime.today()這個物件,而dump不支援物件的序列化所以就檢視dump方法的原始碼,發現裡面有個cls=none的引數,表明你傳入的物件預設沒有類,並且返回的是cls=jsonencoder說明此時cls繼承於jsonencoder,所以我們進一步去jsonencoder裡面檢視原始碼
在jsonencoder類裡面發現乙個default方法與第一次序列化時候的報錯型別一樣,所以我們可以通過修改default方法來達成我們的目的
因為jsonencoder屬於json模組的,所以繼承的時候要寫json.jsonencoder
'''class myjson(json.jsonencoder): #
定義乙個自己的類,並為其指定父類
def default(self, o): #
重新定義父類中的default方法 o代表傳入的引數
if isinstance(o, datetime): #
判斷如果傳入的物件o屬於datetime類,則返回o物件的格式化時間,並且python預設輸出值是字串(間接轉為字串)
return o.strftime('
%y - %m - %d %x')
elif isinstance(o, date): #
判斷如果傳入的物件o屬於date類,則返回o物件的格式化時間,並且python預設輸出值是字串(間接轉為字串)
return o.strftime('
%y - %m - %d')
else: #
物件o既不屬於datetime,也不屬於date類,那麼就預設使用父類中的方法,所以在這裡就再次呼叫父類的方法,並且需要傳入引數
return
super().default(self, o)
res =
#第三次序列化
print(json.dumps(res, cls=myjson)) #
#序列化成功
json可序列化的python資料型別有:
| python | json |+***************====+***************+
| dict | object |字典資料型別
+-------------------+---------------+
| list, tuple | array |列表,元祖資料型別
+-------------------+---------------+
| str | string |字串資料型別
+-------------------+---------------+
| int, float | number |整型和浮點資料型別
+-------------------+---------------+
| true | true |布林值 true
+-------------------+---------------+
| false | false |布林值 false
+-------------------+---------------+
| none | null +空
python pickle模組 json模組
python 在在程式執行過程中,所有的變數都是在記憶體中,記憶體中的變數可以通過命令操作隨意改變,一旦程式結束,變數所占用的記憶體會被系統全部收回,如果沒有把修改的變數儲存到磁碟上,下次執行時,變數又被初始化,我們把在記憶體中可儲存或傳輸的過程叫做序列化pickling,把變數內容從序列化的物件重...
python充值模組 Python 模組補充
subprocess stdout 標準輸出 stdin 標準輸入 stderr 標準錯誤輸出 subprocess是os.system的公升級版,可以在python中執行shell命令,並且可以通過管道獲取stdout stdin stderr 1 importsubprocess2 這樣相當於執...
標準模組 json
python json dict object list,tuple array strstring int,float,int float derived enums number true true false false none null json 解碼為 python 型別轉換對應表 js...