Python 自定義類物件序列化為Json串

2022-08-28 15:27:20 字數 1594 閱讀 7937

之前已經實現了python: json串反序列化為自定義類物件,這次來實現了json的序列化。

測試**和結果如下:

import

json.jsontool

class

score:

math =0

chinese =0

class

book:

name = ''

type = ''

class

student:

id = ''

name = ''

score =score()

books =[book()]

student =student()

json_data = ', '

\

'"books":[, '\

']}

'json.jsontool.json_deserialize(json_data, student)

print

(student.name)

print

(student.score.math)

print(student.books[1].name)

student_str =json.jsontool.json_serialize(student)

print

(student_str)

input(

"\n按回車鍵退出。

")

執行結果:

kid

100the little prince

, ], "

id": "

123", "

name

": "

kid", "

score

": }

按回車鍵退出。

實現**如下:

def

json_serialize(obj):

obj_dic =class2dic(obj)

return

json.dumps(obj_dic)

defclass2dic(obj):

obj_dic = obj.__dict__

for key in

obj_dic.keys():

value =obj_dic[key]

obj_dic[key] =value2py_data(value)

return

obj_dic

defvalue2py_data(value):

if str(type(value)).__contains__('.'

):

#value 為自定義類

value =class2dic(value)

elif str(type(value)) == "":

#value 為列表

for index in range(0, value.__len__

()):

value[index] =value2py_data(value[index])

return value

自定義序列化物件

很多時候,我們需要將物件序列化成字串儲存到記憶體 磁碟或者 page.viewstate 中。基於種種原因,我們希望序列化結果盡可能小,盡可能簡單,即便用其他的方法 比如正規表示式 也能解析出資料。binaryformatter 的結果轉換成字串 或者base64 長度太大,而 xmlseriali...

qt序列化自定義物件 Qt序列化

class painting public painting painting const qstring title,const qstring artist,int year qstring title const private qstring mytitle qstring myartist...

Python 序列化 反序列化自定義型別

內建json模組對於python內建型別序列化的描述 extensible json encoder for python data structures.supports the following objects and types by default python json dict obj...