1.class的例項物件本身沒法序列化為json,dumps()除了第乙個必須的obj
引數外,dumps()
方法還提供了一大堆的可選引數,供我們來定製json序列化。
#!/usr/bin/env python3
#-*-coding=utf-8-*-
__author__='km'
import json
class student(object):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
#這裡需要注意是乙個單寫的函式,不能放在類裡實現,要不下方print裡訪問不了
def student2dict(std): #將student類轉化為dict,dict可以直接轉化為json
return
#把json反序列化為乙個student物件例項,loads()方法首先轉換出乙個dict物件
#然後,我們傳入的object_hook函式負責把dict轉換為student例項
def dict2student(d):
return student(d['name'],d['age'],d['score'])
s = student('bob', 20 ,90)
print(json.dumps(s, default=student2dict))
#方法二不用實現studtent2dict,直接是用class的例項的__dict__屬性即可,它就是乙個dict,用來儲存例項變數。
print(json.dumps(s,default=lambda obj:obj.__dict__))
json_str =''
print(json.loads(json_str,object_hook=dict2student))
輸出如下:
方法二的解釋:
寫了student序列化的函式之後,下次如果遇到乙個teacher
類的例項,照樣無法序列化為json。我們可以偷個懶,把任意class
的例項變為dict。
因為通常class
的例項都有乙個__dict__
屬性,它就是乙個dict
,用來儲存例項變數。也有少數例外,比如定義了__slots__
的class。
js陣列轉化成樹結構
話不多說,直接上 吧 1.首先原有的陣列資料let data 2.想要轉換成的資料型別let treedata 3實現轉換的步驟function arraytotree data 3.第一步轉換,建立id和這個元素的鍵值關係,方便一步找到這個元素 比如我想要找到id為1的元素,就需要去遍歷陣列,這樣...
類陣列轉化成陣列
什麼是類陣列呢?定義 具有長度的屬性,但是屬性是非負整數。它不具有陣列的一些方法,但是不意味著它不能使用陣列的方法。舉例 arguments 以及dom中.getelementbytagname 返回值為類陣列。類陣列轉化為陣列的方法 1.array.from 這是es6新增的特性之一 var a ...
python中double轉化成float32
今天在處理python資料時,發現匯入的mat檔案型別是double matlab預設型別就是double 而我需要用到的資料是float32型別。查詢資料也沒有找到合適的解決辦法。後來自己嘗試著,恰好能做到轉換的目的。所以就寫下來,與君共勉,也希望能夠的到批評指正。首先我們得明白,float 單精...