python實現將類轉化成json串輸出

2021-10-04 20:25:28 字數 1354 閱讀 5952

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 單精...